我正在尝试在创建新记录之前检查具有完全相同关联的现有 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]})
提前致谢!