我試圖構建如展示的多級模型。當用戶創建一個活動時,他們將從表類別和地鐵中選擇一些類別和一些地鐵。然後這些選擇將作爲campaign_category和campaign_metro放在兩個表中。但是,在創建這些條目後,我希望能夠使用表campaign_category_metro中這些組合的排列填充另一個表,以便鏈接廣告系列,爲用戶選擇的類別和都市區設置出價。has_many通過產生交叉連接的結果
例如說一個用戶創建具有ID 10和ID爲1和2的選擇的類別的運動,並顯示已ID 3和4在表中campaign_category地鐵:
和在出現表campaign_metro:
在campagin_category_metro我想有從上面的表中的行置換:
然後用戶可以爲這些活動/地鐵組合設置出價。
截至目前,在創建廣告系列和選擇類別和地鐵時,我可以獲取表格campaign_category和campaign_metro,但最終的表格campaign_category_metro保持空白。下面是我的模型是:
第一層次:
class Campaign < ActiveRecord::Base
has_many :campaign_metros, dependent: :destroy
has_many :metros, through: :campaign_metros
has_many :campaign_categories, dependent: :destroy
has_many :categories, through: :campaign_categories
end
class Category < ActiveRecord::Base
has_many :campaign_categories, dependent: :destroy
has_many :campaigns, through: :campaign_categories
end
class Metro < ActiveRecord::Base
has_many :campaign_metros, dependent: :destroy
has_many :campaigns, through: :campaign_metros
end
二級(填充,而是關係到campaign_category_metro什麼都不做):
class CampaignCategory < ActiveRecord::Base
belongs_to :campaign
belongs_to :category
has_many :campaign_category_metros, dependent: :destroy
has_many :campaign_metros, through: :campaign_category_metros
end
class CampaignMetro < ActiveRecord::Base
belongs_to :campaign
belongs_to :metro
has_many :campaign_category_metros, dependent: :destroy
has_many :campaign_categories, through: :campaign_category_metros
end
第三級(什麼也不顯示在創建):
class CampaignCategoryMetro < ActiveRecord::Base
belongs_to :campaign_category
belongs_to :campaign_metro
end
我怎樣才能允許第三級表是po在創建廣告系列時使用表campaign_category和campaign_metro的交叉結果進行調整?
在創建條目後,用戶將填充出價。有了你的建議,模型之間的關係是否仍然有效? – Sauron 2014-09-26 13:39:16
關係應該按照在模型中指定的方式工作。 您所做的只是在創建時創建CampaignCategoryMetro對象。 雖然允許更新可能會很難。我會檢查是否有任何其他可能性。 – jfornoff 2014-09-26 13:41:09
對於這個表格,我一定會需要更新。是否有另一種模型佈局和關係可以實現相同的功能,但實現起來更簡單? – Sauron 2014-09-26 13:56:28