Я использую Ruby 1.8.7 и Rails 2.3.8, и у меня есть следующий корневой ресурс:
class PointOfInterest < ActiveRecord::Base
set_primary_key "Id"
set_table_name "POI"
has_many :attributes, :foreign_key => 'POIId'
end
Интересующий объект может иметь несколько атрибутов:
class Attribute < ActiveRecord::Base
set_primary_key "Id"
set_table_name "Attribute"
belongs_to :point_of_interest, :foreign_key => 'POIId'
has_one :multimedia, :foreign_key => 'Id', :primary_key => 'Value'
end
Класс атрибута может иметь носитель, связанный с ним:
class Multimedia < ActiveRecord::Base
set_primary_key "Id"
set_table_name "Multimedia"
end
Я пытаюсь вставить точку интереса в мою базу данных, например, так:
poi = PointOfInterest.new
attr = poi.attributes.new
attr.SomeAttribute = 1
attr.build_multimedia(:content => 'test')
poi.save
Это правильно сохраняет оба корневых(PointOfInterest
) и запись Multimedia
.Attribute
, однако, не сохраняется должным образом.Хотя внешний ключ к точке интереса установлен правильно (POIId
), внешний ключ к записи Multimedia
остается null
.
Любая подсказка о том, почему это очень ценится!
Спасибо!