Authlogic: Обход проверки модели, если пользователь вошел в систему - PullRequest
1 голос
/ 10 февраля 2010

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

Ответы [ 2 ]

2 голосов
/ 10 февраля 2010

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

attr_accessor :logged_in

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

validate_on_create :my_check

def my_check
  unless self.logged_in?
    # add errors
  end
end
0 голосов
/ 10 февраля 2010

Вы можете использовать

valide_on_create :my_check, :unless => logged_in?
...