在Ruby on Rails Restful Authentication中,UsersController#new,使用@user = User.new。它真的需要吗?

时间:2011-02-28 20:14:53

标签: ruby-on-rails restful-authentication

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 个答案:

答案 0 :(得分:1)

需要在视图上呈现正确的表单。表单可以说它是否只是非保存对象,就像这里一样,因此表单将创建发布请求。如果它是在DB中找到的用户,那么它将自动创建PUT请求以进行更新。

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

如果您在控制器User.new或User.find(id)

中执行操作会有所不同

答案 1 :(得分:1)

在视图中它是有道理的。假设用户帐户创建失败 - 您将使用其他(非新)new对象重新呈现@user视图。我可能会在操作中重置密码和password_confirmation。