我在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
看来我找到答案。在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
至少对于的has_many关系我已经遇到了麻烦这在蒙戈默认过滤器的工作,所以我不知道,如果你的答案实际上是为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
等进行访问,但我一直无法弄清楚如何实际设置缺省过滤的整体关系。