新しいレコードを作成する前に、まったく同じ関連付けを持つ既存の InvitationSearch レコードを確認しようとしています (同じレコードが 2 つあるのを避けるため) が、これを行う方法がわかりません。
class InvitationSearch < ActiveRecord::Base
has_many :invitations
has_many :brands, :through => :invitation_search_brands
has_many :invitation_search_brands
has_many :categories, :through => :invitation_search_categories
has_many :invitation_search_categories
has_many :sizes, :through => :invitation_search_sizes
has_many :invitation_search_sizes
end
class Invitation < ActiveRecord::Base
belongs_to :invitation_search
end
class InvitationSearchSize < ActiveRecord::Base
belongs_to :invitation_search
belongs_to :size
end
class InvitationSearchBrand < ActiveRecord::Base
belongs_to :invitation_search
belongs_to :brand
end
class InvitationSearchCategory < ActiveRecord::Base
belongs_to :invitation_search
belongs_to :category
end
Invitation_searches_controller create メソッドで、新しい InvitationSearch を作成する前に一致を確認したいと考えています。
私のパラメータでは、gender、brand_ids、category_ids、および size_ids を取得します。私は、正確な性別と同じ関連付け ID のセットを持つレコードのみを気にします。
次のようなことができることはわかっていますが、正確なセットではなく、これらのブランドのいずれかを含むすべてのレコードが返されます。さらに、関連付けごとに操作を実行する必要があり、かなり面倒に思えます。
InvitationSearch.includes(:brands).where(:brands => {:id => params[:invitation_search][:brand_ids]})
前もって感謝します!