我創建了3個模型,如下所示,並使用cocoon嵌套形式在它們之間創建關聯。如何在未保存的記錄之間創建關聯
class Unit < ApplicationRecord
has_many :mapping_categories, -> { distinct }, dependent: :destroy, inverse_of: :unit
accepts_nested_attributes_for :mapping_categories,
allow_destroy: true,
reject_if: :all_blank
end
class MappingCategory < ApplicationRecord
belongs_to :unit
has_many :mapping_items, -> { distinct }, dependent: :destroy, inverse_of: :mapping_category
accepts_nested_attributes_for :mapping_items,
allow_destroy: true
end
class MappingItem < ApplicationRecord
belongs_to :mapping_category
has_many :mapping_item_links
has_many :linked_mapping_items, through: :mapping_item_links, dependent: :destroy
end
每個mapping_item可以通過聯合的表有很多其他mapping_items。在Unit窗體的每個mapping_item部分中,該關聯都顯示爲選擇輸入。
創建或更新Unit時,Unit窗體中有許多mapping_categories選項卡,並且每個mapping_category部分都有很多mapping_items部分。
例如,我有映射A類和測繪類B.我想映射第1項添加到映射A類和測繪項目2到映射B類的問題是:如何創建映射項目1之間的關聯和映射項目2,因爲這兩個項目還沒有保存? 在此先感謝。
這應該搞清楚,但不要忘了申報' inverse_of'用於每個'has_many'關聯,否則保存將不起作用(因爲'belongs_to'在rails 5中默認是必需的,並且它不能自動推斷與關聯的關係)。 – nathanvda