我在Mongoid的消息来源中看到没有proc可以发送到关联方法,在与Mongoid的AR关联下实现的最佳实践是什么:
class Task
...
belongs_to :creator, ->{where(type: :manager)}, class_name: "User"
belongs_to :acceptor, ->{where(type: :acceptor)}, class_name: "User"
end
答案 0 :(得分:0)
我似乎找到了答案。 Mongoid中的关系方法接受块作为第三个参数。
belongs_to :creator, class_name: "User", inverse_of: :created_tasks do
->{ where(type: :manager)}
end
belongs_to :executor, class_name: "User", inverse_of: :accepted_tasks do
->{where(type: :acceptor)}
end
答案 1 :(得分:0)
至少对于has_many关系,我一直在使用mongo中的默认过滤器来解决这个问题,所以我想知道您的答案是否实际上适用于belongs_to。在has_many方面,这对我来说一直是正确的,因此我认为这对其他人也可能是一个有用的答案:
belongs_to :user do
def creator
where(type: :manager)}
end
def executor
where(type: :acceptor)
end
end
然后可以通过说task.user.accepted
,task.user.created
等来访问它们,但是我一直无法弄清楚如何为整体关系实际设置默认过滤。