Rails模型字段不更新到数据库

Raj*_*ian 1 ruby-on-rails

使用的模型

class Car < ActiveRecord::Base
  attr_accessor :model,:edition
  attr_accessible :model,:edition  
  has_many :wheels
end

class Wheel < ActiveRecord::Base
  attr_accessor :type,:tubeless
  attr_accessible :type,:tubeless
  belongs_to :car
end
Run Code Online (Sandbox Code Playgroud)

创建操作

irb(main):009:0> bnz = Car.create :model=>"BENZ" , :edition=>2011
=> #<Car id: 5, model: nil, edition: nil, created_at: "2011-08-26 09:08:08", upd
ated_at: "2011-08-26 09:08:08">
Run Code Online (Sandbox Code Playgroud)

问题: 以上创建记录成功,但我的:model和:edition值不会发送到数据库.只有id,created_at,updated_at值才会在数据库中创建.

更新操作

irb(main):010:0> fifth = Car.find(5)
irb(main):011:0> fifth.update_attributes(:edition=>2011, :model=>"BENZ")
=> true
irb(main):012:0> fifth.update_attributes!(:edition=>2011, :model=>"BENZ")
=> true
irb(main):013:0> fifth.update_attributes!(:edition=>2012, :model=>"BENZ")
=> true
irb(main):014:0>
Run Code Online (Sandbox Code Playgroud)

问题: 这里什么都没发生.在developement.log中,只触发select语句,不触发update语句

我正在使用sqlite db.使用sqlite manager firefox addon来查看db表.铁杆新手,感谢您的帮助.

Rya*_*igg 6

您不应该使用attr_accessor因为定义虚拟属性,而是覆盖字段的setter用途.从你的模型中删除那些使用它的行,它应该没问题.