Это проект 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
, но я не уверен, возможно ли это.