Поля модели Rails не обновляются до базы данных - PullRequest
1 голос
/ 26 августа 2011

Используемые модели

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

Проблема: Вышеописанное создает запись успешно, но значения my: model и: edition не отправляются в базу данных. в базе данных создаются только значения id, create_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 db. Использование аддона sqlite manager firefox для просмотра таблиц БД. Новичок в рельсах, спасибо за помощь.

1 Ответ

6 голосов
/ 26 августа 2011

Не следует использовать attr_accessor, так как он определяет виртуальные атрибуты, переопределяя использование сеттеров для полей. Удалите эти строки, используя его из ваших моделей, и все будет хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...