1

用户 has_many 合同作为买方 用户 has_many 合同作为卖方

我知道我可以使用 CanCan 将用户限制为他们拥有的东西。但在这种情况下,我有一份同时包含买方和卖方的合同。我希望用户能够查看/阅读他们是买方或卖方的所有合同。

我尝试设置一个范围并将其与 CanCan 一起使用,但这似乎不起作用。

我这样设置我的能力...

can :read, Contract.parties(user.id)

我的范围定义为...

scope :parties, lambda { |user_id| where("seller_id = ? OR buyer_id = ?", user_id, user_id) }

我也尝试过以不同的方式设置能力...

can :read, Contract, buyer_id: user.id
can :read, Contract, seller_id: user.id

但以上似乎冲突并抛出错误

4

1 回答 1

0

尝试使用具有 CanCan 能力的块:

can :read, Contract do |c|
  (c.buyer_id == user.id) || (c.seller_id == user.id)
end
于 2013-08-26T15:14:36.527 回答