В Ruby on Rails Restful Authentication, UsersController # new, используется @user = User.new.Это действительно нужно? - PullRequest
0 голосов
/ 28 февраля 2011

* После 1001 *

script/generate authenticated user sessions

users_controller.rb создается с

def new
  @user = User.new
end

и представление имеет следующую строку:

@user.password = @user.password_confirmation = nil

и все. Это действительно нужно? Я имею в виду, что форма будет POST к /users, то есть по RESTful-маршрутизации, переходя к UsersController#create, поэтому созданный на самом деле @user никогда не используется. Это действительно нужно и зачем? спасибо.


Обновление: @user больше никогда не используется где-либо еще ... также я попытался удалить эти две строки

@user = User.new

и

@user.password = @user.password_confirmation = nil

и я все еще могу использовать форму для создания нового пользователя ...

Ответы [ 2 ]

1 голос
/ 28 февраля 2011

На вид это имеет смысл.Допустим, создание учетной записи пользователя завершилось неудачно - вы будете перерисовывать представление new с другим (не новым) объектом @user.Я, вероятно, сбросил бы пароль и password_confirmation в действии.

1 голос
/ 28 февраля 2011

Это необходимо для отображения правильной формы при просмотре. Формы могут сказать, что это просто несохраненные объекты, как здесь, поэтому форма создаст пост-запрос. Если это пользователь, который был найден в БД, он автоматически создаст PUT-запрос на обновление.

<%= form_for @user do |f| %>
  <%#= something %>  
<% end %> 

Он будет вести себя по-другому, если вы используете в своем контроллере User.new или User.find (id)

...