@user = User.find(current_user.id)
немного ненужно. Главным образом, поскольку current_user уже является объектом User, поэтому по крайней мере вы должны сделать @user = current_user
, но я бы порекомендовал, чтобы, если это еще не сделано средой аутентификации, я добавил бы это к вашему контроллеру приложения:
helper_method :current_user
Это сделает объект current_user
доступным для ваших представлений и сделает объект @user
ненужным.
Для обработки перенаправлений у меня обычно это есть в контроллере приложения:
before_filter :require_login
def require_login
current_user || redirect_to(root_url)
end
А потом в моих контроллерах, которые не хотят перенаправлять:
skip_before_filter :require_login
Что касается установки пользователя на новое, я бы не стал этого делать. Как правило, мои User
объекты являются объектами пользователя. Я бы просто протестировал нового пользователя по if current_user
, где nil current_user - это то же самое, что и установка его в 'new'.
Надеюсь, это поможет