ActiveRecord查询计数关系数

时间:2012-01-25 20:24:43

标签: sql ruby-on-rails activerecord

这是一个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个对象,但我不确定它是否可能。

1 个答案:

答案 0 :(得分:0)

这是超级旧的,但是我可能通过使用SQL查询计算角色的员工数量并从中减去目标列的值来完成它。