Rails 3.1.RC4
Devise 1.4.2
我已经将first_name和last_name列添加到设计用户表中.然后我习惯了控制台为我的第一个用户添加first_name和last_name.
现在,application.html.erb在我确定用户登录后,由于以下代码,我显示了我的名字和姓氏:
<%= current_user.first_name %> <%= current_user.last_name %>(<%= current_user.email %>)
Run Code Online (Sandbox Code Playgroud)
这是我的问题:当我尝试通过我创建的新用户表单注册一个新用户时,first_name和last_name没有存储在数据库中或者其他东西......因为当我使用新用户登录时我拥有的代码在我的application.html.erb不显示名字和姓氏.
这是以下名称中的名字和姓氏的文本字段new.html.erb:
<p><%= f.label :first_name %><br />
<%= f.text_field :first_name %></p>
<p><%= f.label :last_name %><br />
<%= f.text_field :last_name %></p>
<p><%= f.label :email %><br />
<%= f.email_field :email %></p>
Run Code Online (Sandbox Code Playgroud)
我还想知道如何为我创建的这些新列添加验证(first_name和last_name).
提前致谢!
默认情况下,设计会使所有属性受到保护.对于您希望能够批量分配的任何属性(例如,通过表单),您需要在模型中明确允许它:
attr_accessible :first_name, :last_name
Run Code Online (Sandbox Code Playgroud)
它在您的控制台中工作,因为您可能做了类似这样的事情:
@user = User.first
@user.first_name = "foo"
@user.save
Run Code Online (Sandbox Code Playgroud)
但是如果属性不可访问,这将不起作用:
@user = User.new(:first_name => "foo")
@user.save
Run Code Online (Sandbox Code Playgroud)
您将在日志文件中看到警告"无法批量分配受保护的属性".
有关验证,请查看Rails文档或本指南.例如,要确保提供全名,请添加
validates_presence_of :first_name, :last_name
Run Code Online (Sandbox Code Playgroud)
到你的模型.
| 归档时间: |
|
| 查看次数: |
3411 次 |
| 最近记录: |