2010-02-10 53 views
1

我正在使用Authlogic。我有一个Entry模型,并且有一个验证方法,如果请求是由登录用户创建的(匿名用户也允许创建条目),我想跳过该方法。我认为UserSession.find将不可用在Entry模型中,就像它来自控制器一样。处理这种情况的最佳方法是什么?我是否需要编写某种自定义的保存方法,并从EntriesController以编程方式调用它?或者有没有办法从模型中检查登录状态?我猜我不想这样做,因为模型应该负责对象状态而不是应用程序状态。Authlogic:如果用户登录,绕过模型验证

回答

2

Entry上创建一个名为logged_in的虚拟属性。

attr_accessor :logged_in 

在控制器中,如果用户已登录,假如果没有设置entry.logged_in为true。然后你可以在验证方法中使用该属性。

validate_on_create :my_check 

def my_check 
    unless self.logged_in? 
    # add errors 
    end 
end 
0

您可以使用

valide_on_create :my_check, :unless => logged_in? 
+0

有这个模型里面没有'LOGGED_IN?'功能。 – 2010-02-10 21:25:30