ActiveRecord Количество запросов Количество отношений - PullRequest
0 голосов
/ 26 января 2012

Это проект Ruby 1.9.3 / Rails 3.2.

Допустим, у меня есть модель с именем Role и модель с именем Employee, связанные через has_many / belongs_toотношения.Роль имеет много сотрудников, а сотрудник принадлежит роли.Обе эти модели принадлежат объекту Store, который имеет много сотрудников и ролей.

Каждая роль имеет атрибут target_headcount, представляющий идеальное число сотрудников на этой должности.Оттуда у меня есть методы, подобные следующему для Role:

class Role < ActiveRecord::Base
  # ...

  # Number of employees currently filling this role.
  def current_headcount
    employees.count
  end

  # Number of headcount above or below the target.
  def variance
    current_headcount - target_headcount
  end
end

Часто мне нужно получить набор каждой роли, для которой есть открытый штат сотрудников.Я делал это, используя следующий метод класса для роли:

def self.open_headcount
  all.select { |r| r.variance < 0 }
end

Однако сейчас я использую meta_search, RubyGem, для которого требуется объект ActiveRecord::Relation.Я хотел бы изменить open_headcount с метода класса на область видимости, чтобы он возвращал объект ActiveRecord::Relation, но я не уверен, возможно ли это.

1 Ответ

0 голосов
/ 30 августа 2013

Это очень старый, но FTR, с которым я, вероятно, мог бы справиться, используя SQL-запрос для подсчета числа сотрудников для роли и вычитая из него значение целевого столбца.

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