我对铁杆很新,所以我请你耐心等待。
我在三个(ActiveRecord)模型之间有一些错综复杂的关系:
class Producer
has_many :clients
end
class Client
belongs_to :producer
has_many :products
end
class Product
belongs_to :client
belongs_to :producer
end
特定产品的生产者不一定与产品客户的生产者相同(但他可以)。
我需要以某种方式选择/范围生产者的所有产品,他不是该产品客户的生产者。我无法绕过那个。我试着在制作人生产线上思考!= producer.products.clients.producer当然没有用或者有意义。
请帮帮忙?!
答案 0 :(得分:1)
Product.includes(:producer, :client).
where("products.producer_id" => X).
where( "clients.producer.id != products.producer_id")
可以根据需要找到生产者ID为X的产品。
答案 1 :(得分:1)
@products = Product.select("products.*").joins(:clients).joins(:producers).where("products.producer_id = ? AND clients.producer_id != ?", producer_id, producer_id)
应该给你所需的结果。
希望它有所帮助!