ActiveRecord搜索条件

时间:2014-04-08 09:29:28

标签: ruby-on-rails ruby activerecord

我有三个模特

员工

class Employee < ActiveRecord::Base
  has_many :employee_company_segments
  has_many :company_segments, :through => :employee_company_segments
end

公司细分

class CompanySegment < ActiveRecord::Base
  has_many :employee_company_segments
  has_many :employees, :through => :employee_company_segments
end

和一个交叉点,EmployeeCompanySegment

class EmployeeCompanySegment < ActiveRecord::Base
  belongs_to :employee
  belongs_to :company_segment   
end

一切正常。

除此之外,员工还有一个company_segment_id。这个概念是每个员工都属于公司部门。然后,我们让某些员工可以查看一个或多个细分市场中的所有员工。因此,我认为,我正在寻找的是员工的范围或方法,允许我这样做......

EmployeeA有两个EmployeeCompanySegment记录,一个是company_segment_id为1,另一个是company_segment_id为2.如果有十个员工在其记录中有company_segment_id或1或2,那么EmployeeA应该能够看到所有十个。< / p>

另一种思考方式

对于employeeA,选择其记录中具有company_segment_id的所有员工,该员工与employeeeeCompanySegment记录中的employee_CompgmentSeid记录相同,该记录的employee_id与employeeA匹配。

有人可以帮忙吗?

我尝试传入这样的数组,但只返回一个空数组

def visible_employees
  Employee.where(:company_segment_id => [EmployeeCompanySegment.all.collect { |x| x.id}])
end

然后我纠正了一些更明智的事情......

def visible_employees
  Employee.where(:company_segment_id => [EmployeeCompanySegment.all.collect { |x| x.company_segment_id}])
end

现在就测试......

最终编辑......

def visible_employees
  Employee.where(:company_segment_id => [EmployeeCompanySegment.where(:employee_id => self.id).collect { |x| x.company_segment_id}])
end

这是有效的。谢谢你的聆听:)

0 个答案:

没有答案