rails4 范围 has_many 协会

rails4 scoped has_many association

在我的 product_users 联合 table 中,除了 product_iduser_id 之外还有一个角色栏。

我的产品模型中有此关联。

has_many :owners, -> { where(product_users: { role: "owner" }) }, 
                     through: :product_users, source: :user

所有产品将只有一个 "owner",其余为 "member"。 我应该使用什么关联来获取产品的 owner 而不是 owners 集合。所以在视图中我想使用 product.owner。我不知道如何使用 has_onebelongs_to.

我可以使用这个实例方法,但我想以某种方式定义一个精细的关联会更好。

def owner
  owners.first
end

我想最简单的方法是在产品中添加一列 "owner_id"。然后,在产品上:

belongs_to :owner

在用户身上是这样的

has_many :owned_products, class_name: "Product", foreign_key: "owner_id"

"class_name" 告诉协会您将要查找 "Product",而 foreign_key 将定义将用于与用户 ID 进行比较的列。

如果您不想添加额外的列,那么您可以将关联命名为 "has_many :owner",但这在很多层面上都是错误的,您不应该这样做。因此,如果您不想添加额外的列,请坚持使用该方法。

def owner
    owners.first
end