0

我对 Rails 比较陌生,所以请您耐心等待。

我在三个(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 != producer.products.clients.producer 的方式思考,这当然行不通或有意义。

请帮忙?!

4

2 回答 2

1
Product.includes(:producer, :client).
   where("products.producer_id" => X).
   where( "clients.producer.id != products.producer_id")

将根据您的需要从具有 id X 的生产者那里找到产品。

于 2013-04-12T10:44:35.000 回答
1
@products = Product.select("products.*").joins(:clients).joins(:producers).where("products.producer_id = ? AND clients.producer_id != ?", producer_id, producer_id)

应该给你所需的结果。

希望能帮助到你 !

于 2013-04-12T12:31:24.313 回答