2010-02-10 73 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