Belirli bir kampanya aşağıdaki modeli derneklerle olarak ayarlandı konum ve kategori hem işlemek için bir tablo oluşturmak için çalışılıyor:Veri Modelleme 3 Yollu Tablo has_many dernek
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
bir kampanya oluşturmaya çalışırken
Kampanya oluşturma kodu:
012 iki farklı şehir ve katogorilerini sonucu olarak paramters birinin kimliği için NULL olurdef 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
kampanya oluşturmak için görünümü GÜNCELLENDİ olarak Kategori ve Metro için iki ayrı collection_select kullanır:
<%= f.collection_select :category_ids, Category.all, :id, :display_category, {}, {multiple: true} %>
ve
<%= 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
Denediğim 3 tablo ilişkisinin yaratılmasına izin vermenin daha iyi bir yolu var mı? veya çıkan tablo kampanya oluşturulduktan sonra aşağıdaki gibi bir şey olacak şekilde seçilmesi de Category
ve Metro
modellerini bağlanmanın bir yolu:
@AlexisRabagoCarvajal Henüz cevap yok. Daha fazla açıklama sağlamak için ** GÜNCELLEME ** ekledim – Sauron
Kurulumun bana iyi görünüyor. Bunun oldukça eski olduğunu biliyorum, ama yukarıdaki kod hakkında sorduğunuz problem nedir? – eirikir
Neyi başarmaya çalıştığınızı biraz daha açıklayabilir misiniz? Spesifik olarak, kategorilerin sadece bir kampanya tarafından sadece metriklerle ilgili olduğunu düşünüyorum - doğru mu? – Julie