(我使用的是Rails 2.2.2,但应该与2.3.5或3.0非常相似)
以下行有效:
User.create!(:email => 'ha')
但是我生成了一个迁移并向users表添加了标识符,并重新启动了Rails控制台并使用了
User.create!(:email => 'bar', :identifier => 'foo')
创建此用户并将电子邮件字段设置为bar(如mysql中所示),但标识符未设置为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_accessible添加到User模型:
def User
attr_accessible :identifier
end
如果您不想为标识符添加attr_accessible(因为不应该允许用户设置自己的标识符),那么您需要先保存用户,然后单独设置标识符:
User.create!(:email => "a@a.com")
u = User.find_by_email("a@a.com")
u.identifier = "foo"
u.save!