новичок: как передать пользователя на модель активов для пользовательского метода? - PullRequest
0 голосов
/ 05 марта 2012

Попытка использовать current_user.id (devise) внутри моей модели активов, только current_user.id недоступен.Как сделать current_user.id доступным в моей модели активов?(как передать пользователя модели активов?)

  after_save :set_photo

  def set_photo
    user = User.find_by_id(1)
    # user = User.find_by_id(current_user.id)  <-- should be this
    user.has_photo = true
    user.save
  end

1 Ответ

1 голос
/ 05 марта 2012

Вы не можете использовать current_user в цепочке обратных вызовов в пределах вашей модели. Это потому что current_user является свойством цикла запрос-ответ. Кроме того, необходимость использования current_user в вашей модели почти наверняка означает, что ваша база данных неадекватна или неправильна.

Например, в вашем случае, почему вы пытаетесь обновить атрибут User при обновлении Asset? Это определенный запах кода, если они не связаны между собой.

Несколько вещей, которые вы можете попробовать:

  1. Устранить проблему проектирования БД - Определить связь между Asset и User. Затем вы можете сделать @asset.user = current_user (или что-то в этом роде) на своих контроллерах.
  2. Уродливый метод грубой силы: не полагайтесь на обратные вызовы и явно вызывайте ваш метод в своих контроллерах.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...