这是一个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
我经常需要获得有开放人数的每个角色的集合。我使用Role的以下类方法执行此操作:
def self.open_headcount
all.select { |r| r.variance < 0 }
end
但是,我现在正在使用meta_search
,一个需要ActiveRecord::Relation
对象的RubyGem。我想将open_headcount
从类方法更改为范围,以便它返回ActiveRecord::Relation
个对象,但我不确定它是否可能。
答案 0 :(得分:0)
这是超级旧的,但是我可能通过使用SQL查询计算角色的员工数量并从中减去目标列的值来完成它。