Ruby on rails Rails属性令人头痛
新来的rails问题 我有一门课是这样的:Ruby on rails Rails属性令人头痛,ruby-on-rails,ruby-on-rails-3,activerecord,Ruby On Rails,Ruby On Rails 3,Activerecord,新来的rails问题 我有一门课是这样的: class Thing < ActiveRecord::Base attr_accessible :name attr_accessor :name validates_uniqueness_of :name, :case_sensitive => false end 这里已经写着名字是零,为什么? 继续,我尝试以下方法: t.name => "test" 现在名称似乎已经确定了? 如果我试图保存: t.
class Thing < ActiveRecord::Base
attr_accessible :name
attr_accessor :name
validates_uniqueness_of :name, :case_sensitive => false
end
这里已经写着名字是零,为什么?
继续,我尝试以下方法:
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时将属性指定为散列,然后保存实例。您应该删除
attr\u访问器:name
,这将为name
创建getter和setter,但它们已经由ActiveRecord创建。您应该删除attr\u访问器:name
,这将为name
创建getter和setter,但它们已经由ActiveRecord现场创建。为了解释这个答案,当您想要一个不持久化到数据库的“虚拟属性”时,您只需要attr\u accessor
。如果表中有名称
字段,ActiveRecord会自动为您创建名称
和名称=
方法。点击。为了解释这个答案,当您想要一个不持久化到数据库的“虚拟属性”时,您只需要attr\u accessor
。如果表中有名称
字段,ActiveRecord会自动为您创建名称
和名称=
方法。
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