我有这种关系:
class Organization < ActiveRecord::Base
has_many :users
end
class User < ActiveRecord::Base
belongs_to :organization
end
我想收集一位用户的同事(即谁加入了同一个组织)。
简单的方法是编写一个这样的方法:
def coworkers
organization ? organization.users - [self] : []
end
然后我开始思考并觉得我可以通过has_many关系来做到这一点。
我结束了这样做:
class User < ActiveRecord::Base
belongs_to :organization
has_many :coworkers, :through => :organization, :source => :users
end
工作得很好除了用户被包含在同事中。
我现在想知道的是:
谢谢!
答案 0 :(得分:3)
您可以在关系中添加:conditions
选项以排除当前用户。例如:
has_many :co_workers, :through => :organization, :source => :users, :conditions => ["user_id != ?", id]
这应该为你做到!
答案 1 :(得分:0)
@davidb:你的答案几乎是正确的,但条件中的id不是调用user.coworkers时评估的id(用户的一个)。
这是要走的路:
has_many :coworkers, :through => :organization, :source => :users, :conditions => lambda { ["users.id != ?", self.id] }