gpt4 book ai didi

ruby-on-rails - 设计:将 first_name 添加到用户

转载 作者:行者123 更新时间:2023-12-01 09:06:36 25 4
gpt4 key购买 nike

Rails 3.1
设计 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 %>)

这是我的问题:当我尝试通过我创建的新用户表单注册新用户时,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>

我还想知道如何为我创建的这些新列(first_name 和 last_name)添加验证。

提前致谢!

最佳答案

rails 3

默认情况下,devise 会保护所有属性。对于您希望能够批量分配的任何属性(例如通过表单),您需要在模型中明确允许它:

attr_accessible :first_name, :last_name

它在您的控制台中起作用,因为您可能做了这样的事情:

@user = User.first
@user.first_name = "foo"
@user.save

但如果属性不可访问,这将不起作用:

@user = User.new(:first_name => "foo")
@user.save

您应该会在日志文件中看到“无法批量分配 protected 属性”的警告。

有关验证,请查看 Rails docsthis guide .例如,要确保提供全名,请添加

validates_presence_of :first_name, :last_name

到你的模型。

关于ruby-on-rails - 设计:将 first_name 添加到用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6722094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com