5
我試圖建立一個表來同時處理一個特定的廣告系列已被設置爲以下模型協會的位置和類別:數據建模3路表的has_many協會
class Campaign < ActiveRecord::Base
has_many :campaign_category_metro_bids, dependent: :destroy
has_many :metros, through: :campaign_category_metro_bids
has_many :categories, through: :campaign_category_metro_bids
end
class Metro < ActiveRecord::Base
has_many :campaign_category_metro_bids
has_many :campaigns, through: :campaign_category_metro_bids
has_many :categories, through: :campaign_category_metro_bids
end
class Category < ActiveRecord::Base
has_many :campaign_category_metro_bids
has_many :campaigns, through: :campaign_category_metro_bids
has_many :metros, through: :campaign_category_metro_bids
end
class CampaignCategoryMetroBid < ActiveRecord::Base
belongs_to :campaign
belongs_to :category
belongs_to :metro
end
當試圖建立廣告活動選擇兩個不同的城市和分類結果爲NULL的paramters之一當ID:
建立廣告活動代號:
def new
if signed_in?
# create new campaign
@user = User.find(params[:id])
@campaign = @user.campaigns.new
else
redirect_to signin_path
end
end
def create
@campaign = User.find(params["campaign"]["user_id"]).campaigns.build(campaign_params)
if @campaign.save
flash[:success] = "Campaign created!"
redirect_to current_user
else
render 'new'
end
end
修訂 視圖創建活動採用兩個獨立collection_select類別和地鐵爲:
<%= f.collection_select :category_ids, Category.all, :id, :display_category, {}, {multiple: true} %>
和
<%= f.collection_select :metro_ids, Metro.all, :id, :full_name, {}, {multiple: true} %>
campaigns_params:
def campaign_params
params.require(:campaign).permit(:name, :campaign_category_metro_bid_id,
:metro_ids => [], :category_ids => [])
end
有沒有更好的方法來允許我嘗試創建3個表關係? 或方式,使產生的表像之下在建立廣告活動的Category
和Metro
機型在選擇鏈接:
@AlexisRabagoCarvajal還沒有任何解答。我添加了** UPDATED **以允許更多的說明 – Sauron 2014-12-03 21:57:42
您的設置對我來說看起來很好。我知道這是相當古老的,但是你對上面的代碼有什麼問題? – eirikir 2015-07-29 21:42:41
你能解釋一下你試圖完成什麼嗎?具體來說,在我看來,類別只是通過競選與地鐵有關 - 這是否正確? – Julie 2015-07-30 14:17:35