В Rails 3.1 как найти магазины с указанными категориями, когда категории связаны через: has_many,: through - PullRequest
0 голосов
/ 08 декабря 2011

В моей модели Магазина у меня есть следующее:

class Store < ActiveRecord::Base
  has_many :categorizations
  has_many :categories, :through => :categorizations

  scope :by_categories, lambda{|category_ids|
    where(*stores have the following* => category_ids) unless category_ids.empty?
  }

Я ищу, чтобы настроить область, в которой я могу отправить его по нескольким или одному идентификатору категории и получить хранилища возврата области, принадлежащие все категории указаны.

Спасибо за внимание.

1 Ответ

2 голосов
/ 08 декабря 2011
class Store < ActiveRecord::Base
  has_many :categorizations
  has_many :categories, :through => :categorizations

  scope :by_categories, lambda { |category_ids|
    joins(:categorizations).where('categorizations.category_id' => category_ids) unless category_ids.empty?
  }
end

>> Store.by_categories([1,2])
=> SELECT "stores".* FROM "stores" INNER JOIN "categorizations" ON "categorizations"."store_id" = "stores"."id" WHERE "categorizations"."category_id" IN (1, 2)
...