私は次のモデルを持っています:
class Product < ActiveRecord::Base
has_many :product_recommendation_sets, :dependent => :destroy
has_many :recommendation_sets, :through => :product_recommendation_sets
end
class RecommendationSet < ActiveRecord::Base
has_many :product_recommendation_sets, :dependent => :destroy
has_many :products, :through => :product_recommendation_sets
has_many :recommendations
end
class Recommendation < ActiveRecord::Base
belongs_to :recommendation_set
end
recommendations
recommendations_set
そして、次のように追加しています:
p = Product.find_by_wmt_id(product) || Product.create( ItemData.get_product_data(product) )
recommendation = find_by_rec_id(rec_id) || create( ItemData.get_product_data(rec_id) )
rec_set = RecommendationSet.find_or_create_by_rating_set_id_and_model_version_and_product_id(rating_set.id, model_version, p.id)
sec_set.update_attributes(
:rating_set_id => rating_set.id,
:product_id => p.id,
:model_version => model_version,
:notes => note
)
sec_set.recommendations << recommendation
sec_set.save
prs = ProductRecommendationSet.find_or_create_by_recommendation_set_id_and_rating_set_id_and_product_id(rec_set .id, rating_set.id, p.id,)
prs.update_attributes(
:recommendation_set_id => rec_set.id,
:rating_set_id => rating_set.id,
:product_id => p.id
)
これは期待どおりに機能しますが、私の問題は、 multiplerecommendation_sets
に属する複数products
があり、それぞれがrecommendation_sets
同じrecommendation
. 私が現在行っているようにそれぞれrecommendation
を aに保存することにより、2 つが同じを持っている場合、セットの 1 つだけがそれを追加します。save by などのセカンダリIDを使用して、それぞれを複数に保存する方法はありますか?または、この関係をに変更する必要がありますか?recommendation_set
recommendation_sets
recommendation
recommendation
recommendation
recommendation_sets
recommendation_id_and_product_id
has_many :through