新手铁路问题即将来临。
我有一个这样的课程:
class Thing < ActiveRecord::Base
attr_accessible :name
attr_accessor :name
validates_uniqueness_of :name, :case_sensitive => false
end
我已完成迁移,表格看起来还不错。然后我启动rails console
并尝试以下操作:
t = Thing.new(:name => "test")
=> #<Thing id: nil, name: nil, description: nil, created_at: nil, updated_at: nil>
已经在这里说名字是零,为什么? 继续,我试试这个:
t.name
=> "test"
现在名字好像已经设定好了? 如果我试图保存:
t.save!
Thing Exists (8.0ms) SELECT 1 AS one FROM "things" WHERE LOWER("things"."name") = LOWER('test') LIMIT 1
SQL (16.0ms) INSERT INTO "things" ("created_at", "description", "name", "updated_at") VALUES ('2012-10-28 16:10:12.701000', NULL, NULL, '2012-10-28 16:10:12.701000')
=> true
为什么我指定的名称没有保存? 我想要的是能够在调用new时将属性指定为哈希,然后保存实例。
答案 0 :(得分:5)
你应该删除attr_accessor :name
,这创建了getter&amp; name
的setter,但它们已由ActiveRecord