У меня есть класс Product
, который has_many
через Connection
экземпляры класса. Я хочу запросить, чтобы найти продукты, которые имеют как end_a
, так и end_b
. Метод текущего класса работает с 2-мя предостережения:Запрос ActiveRecord, основанный на нескольких объектах через has_many отношение
- не сумеет правильно вернуться, если поиск где
end_a
иend_b
одинаковы. Вместо этого следует искать, еслиproduct
имеет 2 экземпляра, а не только один из объектов. - Возвращает
Array
, когда я хочуActiveRecord_Relation
.
Ниже приведен метод класса .query
, любые отзывы или идеи оценены.
class Product < ActiveRecord::Base
has_many :connections, dependent: :destroy, as: :connectionable
has_many :genders, through: :connections
def self.query(end_a, end_b)
search_base = active.joins(:connections)
end_a_search = search_base.where(connections: { gender_id: end_a })
end_a_search & search_base.where(connections: { gender_id: end_b })
end
end
пс: После того, как это понял, скорее всего, это движение в рамки для Product
Какие соединения? Присоединиться к модели? – BroiSatse
@BroiSatse Исправлено выше, но 'Genders' принадлежит' Product' через 'Connections' – barnett
' scope: some_query, -> (end_a, end_b) Product.joins (: connections) .where ("connections.gender_id =? OR connections.gender_id =? ", end_a, end_b)' – bjhaid