Запрос Ruby on Rails 2 на счетчик ассоциаций - PullRequest
1 голос
/ 25 июня 2011

Этот вопрос довольно похож на [1], за исключением того, что я использую Rails 2.3.5 (да, старый) и полный новичок в RoR. У меня есть две модели, Configfile и Signoff.

Я хочу найти все конфигурационные файлы, в которых количество подписей <2. Конечно, я мог бы сделать это, отфильтровав массив вручную, но эта база данных велика и довольно медленная. </p>

class Configfile < ActiveRecord::Base
  belongs_to :computer
  has_many :signoffs,
           :dependent => :destroy
end

и

class Signoff < ActiveRecord::Base
  belongs_to :configfile
end

Это похоже на то, что должно быть довольно легко сделать в Rails, но я не могу понять это. Мой запрос до сих пор выглядит так, и я не получил ничего, что могло бы ограничить его числом подписей.

configs = c.configfiles.find(:all,
                             :include => :signoffs,
                             :order => 'filename')

[1] Запрос Rails 3 при условии подсчета ассоциации

1 Ответ

2 голосов
/ 25 июня 2011
Configfile.find(:all, :group=>"configfile_id", :joins=>:signoffs, :having=>"count(*) &lt 2")

Что должно дать вам столько же, сколько эквивалентные рельсы3: <pre> Configfile.joins(:signoffs").group("configfiles.id").having("count_all < 2").count(:all)

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