协会PROC为mongoid

问题描述 投票:0回答:2

我在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
ruby-on-rails ruby mongodb sinatra mongoid
2个回答
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

0
投票

至少对于的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.acceptedtask.user.created等进行访问,但我一直无法弄清楚如何实际设置缺省过滤的整体关系。

© www.soinside.com 2019 - 2024. All rights reserved.