где подходящее место для обработки записи current_user.id в объект - PullRequest
0 голосов
/ 23 февраля 2012

Я не использую Devise, но внедрил простую схему аутентификации (в основном изложенную здесь http://railscasts.com/episodes/250-authentication-from-scratch) с соответствующей частью здесь:

application_controller.rb

helper_method :current_user

private
def current_user
  @current_user ||= User.find(session[:user_id]) if session[:user_id]
end

У меня есть список активов, которые пользователь должен авторизовать для добавления. Я использую скрепку. Пользователь может has_many, а актив принадлежит_ пользователю (хотя это, по сути, не имеет отношения к назначению, так как моя модель активов полиморфна для различных типов_собрабельных)).

Где я должен назначить идентификатор current_user для актива? Я бы подумал в модели; может быть, я должен сделать значения по умолчанию с использованием сеанса [: user_id], но это выглядит довольно уродливо.

Кроме того, это nested_attributes и модели, в которые они вложены, в настоящее время ничего не знают о пользователе. Так что на самом деле источник информации для current_user не является частью текущей ассоциации.

thx

edit 1, я должен создать экземпляр пользователя на основе сеанса [: user_id] значение или просто вставить его?

1 Ответ

1 голос
/ 23 февраля 2012

Если я правильно понимаю ваш вопрос, почему бы не назначить пользователя активу в том, какой контроллер первым обнаружит, что актив принадлежит пользователю?Контроллер отвечает за перевод веб-запросов (включая сеанс / текущего пользователя) в нечто, применимое к модели.

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