Ruby on rails 为什么使用Ruby on Rails';User.create!(:email=>;&x27;ha&&x27;,:identifier=>;>;&x27;foo&&x27;)不工作?
(我使用的是Rails 2.2.2,但应该非常类似于2.3.5或3.0) 以下线路工程:Ruby on rails 为什么使用Ruby on Rails';User.create!(:email=>;&x27;ha&&x27;,:identifier=>;>;&x27;foo&&x27;)不工作?,ruby-on-rails,ruby-on-rails-3,activerecord,restful-authentication,Ruby On Rails,Ruby On Rails 3,Activerecord,Restful Authentication,(我使用的是Rails 2.2.2,但应该非常类似于2.3.5或3.0) 以下线路工程: User.create!(:email => 'ha') 但是我生成了一个迁移,并将标识符添加到用户表中,重新启动Rails控制台,并使用 User.create!(:email => 'bar', :identifier => 'foo') 此用户是使用创建的,电子邮件字段设置为bar(如mysql中所示),但identifier未设置为foo。。。有什么原因吗 db/sc
User.create!(:email => 'ha')
但是我生成了一个迁移,并将标识符添加到用户表中,重新启动Rails控制台,并使用
User.create!(:email => 'bar', :identifier => 'foo')
此用户是使用创建的,电子邮件字段设置为bar
(如mysql中所示),但identifier
未设置为foo
。。。有什么原因吗
db/schema.rb
:
create_table "users", :force => true do |t|
t.string "login"
t.string "email"
t.string "crypted_password", :limit => 40
t.string "salt", :limit => 40
t.datetime "created_at"
[...]
t.string "short_bio"
t.string "identifier"
end
尝试将attr\u accessible
添加到User
模型:
def User
attr_accessible :identifier
end
如果您不想为标识符添加attr\u accessible
(例如,不应允许用户设置自己的标识符),则需要先保存用户,然后单独设置标识符:
User.create!(:email => "a@a.com")
u = User.find_by_email("a@a.com")
u.identifier = "foo"
u.save!
这是你的真实复制粘贴代码吗?如果是这样的话,你就错了。如果没有,请发布您的实际代码。哦。。。打字错误修正。。。这不是因为打字错误…您正在使用create代码>命令正确。如果你想要一个更好的答案,你需要向我们展示一些代码。您的模型和架构至少有一个。@Jack是的。。。Rails控制台返回的对象确实显示了一个标识符字段。。。数据库日志还显示一个带有标识符的插入
,其值为NULL
。。。但是分数
有一个默认值,比如说20,所以我想知道是否有一个地方可以设置默认值。。。是否应该在models/user.rb
中?这方面的规则是什么。。。所以create
和create
如果要设置任何初始值,两者都需要有此属性可访问:字段名称
?有关于这个的文档/教程吗?谢谢。attr\u accessible
表示属性可以“批量分配”,例如,当属性从表单中获得时。退房啊,我明白了。。。这是为了保护黑客在代码使用“批量分配”时将随机记录发送到表中。。。因此,属性是可访问的“白名单”的东西,可以大规模分配。。。