4

ここに私のクラスがあります:

class Product < ActiveRecord::Base
  has_and_belongs_to_many :categories
end

class Category < ActiveRecord::Base
  has_and_belongs_to_many :products
end

カテゴリにはvisibleブール値があります。

カテゴリがすべて表示されているすべての製品を取得できるようにスコープを作成する必要がありProductます (つまり、製品に 10 個のカテゴリがあり、1 つのカテゴリでもvisiblefalse に設定されている場合、スコープはその製品を破棄する必要があります)。

ActiveRecord 呼び出しと MySQL クエリの両方が受け入れられます。

編集:数十万の製品があり、この操作をデータベースに委任する必要があります。これは、ページネーションを実行し、この製品の配列で好きなものをソートする必要があるためです。

4

2 に答える 2

1
Product.where("id not in (select product_id from categories where visible='false')")

お役に立てれば。

于 2013-05-16T17:52:32.423 に答える