mongoid模型与另一个模型有两个关系 - rails mongodb

时间:2018-02-22 22:17:28

标签: ruby-on-rails ruby mongodb mongoid

我有一个用户模型和一个订单模型。有两种类型的用户:卖家和司机。卖家和司机都有很多订单,每个订单属于一个卖家和一个司机。因此,我希望能够查询user.orders并让它返回特定用户的订单,还能成功查询order.sellerorder.driver。我如何建立这些关系?

2 个答案:

答案 0 :(得分:0)

似乎没有明确的方法让2个关系在另一个模型上共享一个字段。你总是可以做这样的事情,如果你有一个区分司机和卖家的领域,如果它们是混合的,那么它就不会起作用。

<强> User.rb

has_and_belongs_to_many :orders

<强> Order.rd

has_and_belongs_to_many :users
def seller
  users.where(job: User.DRIVER)
end

更新

<强> User.rb

has_many :sales, class_name: 'Order', inverse_of: :seller
has_many :pickups, class_name: 'Order', inverse_of: :driver
def orders
  Order.or(seller_id: self.id, driver_id: self.id)
end

<强> Order.rb

belongs_to :seller, class_name: 'Order', inverse_of: :sales
belongs_to :driver, class_name: 'Order', inverse_of: :pickups

答案 1 :(得分:0)

这就是我想出来的......非常确定它是按预期工作的。

Class User has_many :sales, class_name: 'Order', inverse_of: :seller has_many :pickups, class_name: 'Order', inverse_of: :driver end

Class Order belongs_to :seller, class_name: "User", inverse_of: :sale belongs_to :driver, class_name: "User", inverse_of: :pickup end