Я использую Authlogic. У меня есть модель Entry
, и есть метод проверки, который я хочу пропустить, если запрос был сделан зарегистрированным пользователем (анонимным пользователям также разрешено создавать записи). Я предполагаю, что UserSession.find
не будет использоваться изнутри модели Entry
, как это происходит с контроллером. Каков наилучший способ справиться с этой ситуацией? Нужно ли мне написать собственный метод сохранения и вызвать его программно из EntriesController
? Или есть способ проверить состояние входа изнутри модели? Я предполагаю, что я бы не хотел этого делать, так как модель должна отвечать за состояние объекта, а не за состояние приложения.Authlogic: проверка байпасной модели, если пользователь зарегистрирован
1
A
ответ
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?
Там нет 'logged_in?' Функциональности внутри этой модели. –