#jquery #ruby-on-rails #ruby-on-rails-3 #model
#jquery #ruby-on-rails #ruby-on-rails-3 #Модель
Вопрос:
Если у меня есть класс с именем Group, и в этом классе у меня есть has_many:users
Я хочу добавить метод к классу Group, чтобы узнать, входит ли конкретный пользователь в эту группу. Если я использую проверку подлинности Devise, я могу вызвать current_user.
Итак, я думаю, мой первый вопрос был бы таким: могу ли я вызвать этот current_user из модели, или мне нужно передать его методу?
Мой второй вопрос заключается в том, что я должен быть в состоянии сделать что-то вроде следующего?
def has_access?
!current_user.nil amp;amp; users.where(:id == current_user.id).count(:id) > 0
end
Ответ №1:
Вы не можете вызвать current_user в моделях — это доступно только в рамках контроллеров и представлений.
Это означает, что ваш метод будет выглядеть немного по-другому — возможно, попробуйте следующее:
def has_access?(user)
user.present? amp;amp; users.where(:id => user.id).any?
end
Ответ №2:
current_user является вспомогательным, поэтому вы не можете получить к нему доступ из модели и должны передать его в качестве аргумента методу, как вы сказали.
Что касается вашего второго вопроса, можете ли вы сказать мне, в каком классе это определено? Насколько я понимаю, это, похоже, содержится в определении групповой модели, поскольку вы используете «пользователи», которые, я полагаю, являются ассоциацией has_many. Если это так, ответ, очевидно, отрицательный, поскольку «current_user» здесь неизвестен.