我有三个模特
员工
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
这是有效的。谢谢你的聆听:)