Sto tentando di costruire una tabella per gestire sia l'ubicazione e la categoria di una certa campagna è stata impostata con le seguenti associazioni modello:Data Modeling 3 vie associazione Tabella 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
Quando si tenta di creare una campagna per la selezione di due città e categorie diverse il risultato è NULL per l'id di una delle paramters come:
campagna codice di creazione:
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
AGGIORNATO La vista per creare la campagna utilizza due collection_select separato per Categoria e Metro come:
<%= f.collection_select :category_ids, Category.all, :id, :display_category, {}, {multiple: true} %>
e
<%= 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
Esiste un modo migliore per consentire la creazione di una relazione con tre tabelle mentre sto tentando? o un modo per collegare i modelli Category
e Metro
alla selezione in modo che la tabella risultante è qualcosa di simile al di sotto al momento della creazione della campagna:
@AlexisRabagoCarvajal non ci sono ancora risposte. Ho aggiunto il ** AGGIORNATO ** per consentire ulteriori chiarimenti – Sauron
La configurazione mi sembra soddisfacente. So che è piuttosto vecchio, ma qual è il problema che stai ponendo riguardo al codice sopra? – eirikir
Puoi spiegare un po 'di più quello che stai cercando di realizzare? In particolare, mi sembra che le categorie siano solo collegate alle metros da una campagna - è corretto? – Julie