2010-02-10 2 views
1

Я использую Authlogic. У меня есть модель Entry, и есть метод проверки, который я хочу пропустить, если запрос был сделан зарегистрированным пользователем (анонимным пользователям также разрешено создавать записи). Я предполагаю, что UserSession.find не будет использоваться изнутри модели Entry, как это происходит с контроллером. Каков наилучший способ справиться с этой ситуацией? Нужно ли мне написать собственный метод сохранения и вызвать его программно из EntriesController? Или есть способ проверить состояние входа изнутри модели? Я предполагаю, что я бы не хотел этого делать, так как модель должна отвечать за состояние объекта, а не за состояние приложения.Authlogic: проверка байпасной модели, если пользователь зарегистрирован

ответ

2

Создайте виртуальный атрибут на Entry под названием logged_in.

attr_accessor :logged_in 

В контроллере, установите entry.logged_in истинное значение, если пользователь вошел в систему, ложь, если нет. Затем вы можете использовать этот атрибут в методе проверки.

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?' Функциональности внутри этой модели. –