ruby-on-rails – 为什么Ruby on Rails’User.create!(:email =>’ha’,:identifier =>’foo’)不起作用?

(我使用的是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!
点赞