У меня проблема с созданием экземпляра объекта ListItem
с указанными атрибутами. По какой-то причине все атрибуты установлены на nil
, даже если я указываю значения. Однако, если я укажу атрибуты для List
, они сохранят свои значения.
Атрибуты для List
сохраняют свои значения:
>> list = List.new(:id => 20, :name => "Test List")
=> #<List id: 20, name: "Test List">
Атрибуты для ListItem
не сохраняют свои значения:
>> list_item = ListItem.new(:id => 17, :list_id => 20, :name => "Test Item")
=> #<ListItem id: nil, list_id: nil, name: nil>
ОБНОВЛЕНИЕ № 1 :
Я думал, что id
был единственным атрибутом, не сохранившим свое значение, но понял, что установка любого атрибута для ListItem
имеет значение nil
.
ОБНОВЛЕНИЕ № 2 :
Я добавил validates_associated :list_items
в класс List
, что позволило устранить ошибку, связанную с пустым атрибутом name
.
Однако я все еще не могу явно присвоить id
новому ListItem
.
list.rb:
class List < ActiveRecord::Base
has_many :list_items, :dependent => :destroy
accepts_nested_attributes_for :list_items,
:reject_if => lambda { |a| a[:name].blank? },
:allow_destroy => true
end
list_item.rb:
class ListItem < ActiveRecord::Base
belongs_to :list
validates_presence_of :name
end
schema.rb
ActiveRecord::Schema.define(:version => 20100506144717) do
create_table "list_items", :force => true do |t|
t.integer "list_id"
t.string "name"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "lists", :force => true do |t|
t.string "name"
t.datetime "created_at"
t.datetime "updated_at"
end
end