РЕДАКТИРОВАТЬ: полностью заменяет мой первый ответ одним, надеюсь, не так глупо: -)
(Хотя существует несколько способов реализации и управления сеансами в Rails, по умолчанию используется cookie в браузере для ссылки на ключ, хранящийся в памяти. Сеансы создаются по запросу из браузера, поэтому, безусловно, возможно использовать консоль для доступа к существующему сеансу, это, вероятно, не то, что вам нужно.)
Таким образом, ваш метод user_from_remember_token либо возвратит пользователя, либо nil. То, что я не вижу в вашем коде, это то, где вы устанавливаете метку запоминания на модели User. Я предполагаю, что это там, но вы можете захотеть иметь код, который говорит пользователю, чтобы войти, если вы не найдете их. Общий шаблон будет
def current_user
@current_user ||= user_from remember_token
unless @current_user
flash[:notice] = "Yo! Log in first."
redirect_to login_path and return
end
end
Нет проблем с вызовом искателя модели из отдельного контроллера. Но зачем звонить User.find_by_remember_token(:remember_token)
- у вас еще нет запоминающего токена (верно?). Разве вы не хотите просто вызывать метод current_user
в вашем помощнике сеансов?
Если метод невидим, вы можете включить или запросить помощника сеанса в вашем application_controller.rb