Ruby on 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.

新来的rails问题

我有一门课是这样的:

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