Запрос связанных классов - PullRequest
0 голосов
/ 20 мая 2011

Если у меня есть класс с именем Group, и в этом классе у меня есть has_many: пользователи

Я хочу добавить метод в класс группы, чтобы узнать, входит ли конкретный пользователь в эту группу. Если я использую аутентификацию Devise, я могу вызвать current_user.

Итак, я думаю, что мой первый вопрос: могу ли я вызвать current_user из модели или мне нужно передать его методу?

Мой второй вопрос: я должен быть в состоянии сделать что-то вроде следующего?

  def has_access?
    !current_user.nil && users.where(:id == current_user.id).count(:id) > 0
  end

Ответы [ 2 ]

2 голосов
/ 20 мая 2011

Вы не можете вызвать current_user в моделях - он доступен только в области контроллеров и представлений.

Что означает, что ваш метод будет выглядеть немного иначе - возможно, попробуйте следующее:

def has_access?(user)
  user.present? && users.where(:id => user.id).any?
end
0 голосов
/ 20 мая 2011

current_user является помощником, поэтому вы не можете получить к нему доступ из модели и должны передать его в качестве аргумента методу, как вы сказали.

По второму вопросу: не могли бы вы сказать, в каком классе это определено? Как я понимаю, похоже, что это в определении модели группы, так как вы используете «пользователей», которые, как мне кажется, являются ассоциацией has_many. Если это так, то ответ, очевидно, нет, поскольку «current_user» здесь неизвестен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...