【问题标题】:Rails model fields not updating to databaseRails 模型字段未更新到数据库
【发布时间】:2011-08-26 09:36:30
【问题描述】:

使用的模型

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

创建操作

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">

问题: 以上成功创建记录,但我的 :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>

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

我正在使用 sqlite 数据库。使用 sqlite manager firefox 插件查看数据库表。 Rails 新手,感谢您的帮助。

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

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

    【讨论】:

    • 感谢 Ryan(雷达)。效果很好。想成为你的学生;-)
    猜你喜欢
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-06
    • 1970-01-01
    相关资源
    最近更新 更多