我需要编写一个范围,我将传递用户的ID,并将从users
表中收集该用户的所有公司的所有用户列表关联。
在User.rb中:
has_many :employments
has_many :companies, :through => :employments, :dependent => :destroy
...
在Employment.rb中:
belongs_to :user
belongs_to :company
在Company.rb中:
has_many :employments
has_many :users, :through => :employments, :dependent => :destroy
这可以通过以下方式实现:
current_user.companies.each{|c| c.users.each {|u| u}}
但是这样写我认为更耗时。
答案 0 :(得分:1)
以下(未测试)范围查找给定用户工作的所有公司。
class Company
has_many :employments
has_many :users, :through => :employments, :dependent => :destroy
scope :with_user, lambda { |user_id| joins(:employments).where(:user => user_id) }
...
运行rails c
并执行try Company.with_user(User.last!.id)
,看看会发生什么。