我有以下两个对象:
class Layout < ActiveRecord::Base
has_many :content_panels, foreign_key: :layout_uuid, primary_key: :uuid
. . .
end
和
class ContentPanel < ActiveRecord::Base
belongs_to :layout, foreign_key: :layout_uuid, primary_key: :uuid
. . .
end
如果我执行以下操作:
layout = Layout.create
=> #<Layout id: 42, uuid: nil>
我希望以下工作
content_panel = layout.content_panels.create
=> #<ContentPanel id: 31, layout_id: nil, layout_uuid: nil, uuid: nil>
。 。 。它确实如此,除非我打电话:
content_panel.layout
=> nil
我总是得到nil
。 我应该获得我创建的layout
对象?
但如果我打电话:
layout.content_panels
=> #<ActiveRecord::Associations::CollectionProxy [#<ContentPanel id: 31, layout_id: nil, layout_uuid: nil, uuid: nil>]>
我得到一个包含我在上面创建的content_panel
的对象列表。
是什么让我的content_panel.layout
值始终等于nil而不是它所属的对象?
答案 0 :(得分:0)
您的layout = Layout.create
来电未创建uuid
,您将其用作关联两个模型的主键。因此,如果没有设置uuid
,则Rails无法在layout_uuid
中设置ContentPanel
,因此无法在数据库中记录关联。