(我使用的是 Rails 2.2.2,但应该与 2.3.5 或 3.0 非常相似)
以下行有效:
User.create!(:email => 'ha')
但我生成了一个迁移并添加了
identifier
到用户表,并重新启动 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_accessible
至 User
模型:
def User
attr_accessible :identifier
end
如果您不想添加
attr_accessible
为 identifier
(因为说,不应该允许用户设置自己的标识符),那么你需要先保存用户,然后单独设置标识符:User.create!(:email => "a@a.com")
u = User.find_by_email("a@a.com")
u.identifier = "foo"
u.save!
关于ruby-on-rails - 为什么 Ruby on Rails 的 User.create!( :email => 'ha' , :identifier => 'foo' ) not work?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5011676/