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

mongoid model has two relations with another model - rails mongodb

我有一个用户模型和一个订单模型。有两种类型的用户:卖家和driver。卖家和driver都有很多订单,每个订单属于一个卖家和一个driver。因此,我希望能够查询 user.orders 并使其成为 return 特定用户的订单,而且还能成功查询 order.sellerorder.driver。我怎样才能建立这些关系?

似乎没有明确的方法让两个关系在另一个模型上共享一个字段。如果你有一个区分司机和卖家的字段,你总是可以做这样的事情,如果他们是混合的,那是行不通的。

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

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

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