2013-08-24 27 views
1

用户的has_many合同作为买家 用户的has_many合同作为卖家轨道4 - 什么是限制对共享对象

我知道我可以使用惨惨限制用户对他们自己的事情接入的最佳做法。但在这种情况下,我有一个合同,其中既有买方&卖方。我希望用户能够看到/阅读他们是买方或卖方的所有合同。

我尝试设置一个范围,并将其与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 

但上述似乎冲突并抛出一个错误

回答

0

尝试使用块与惨惨能力:

can :read, Contract do |c| 
    (c.buyer_id == user.id) || (c.seller_id == user.id) 
end 
+0

我不知道你能做到这一点。我会给它一个镜头,但我已经交换到保护宝石。我会信任你,并将你的答案标记为正确。 – Altonymous

+0

Thx。我会检查保护宝石,从来没有听说过它。 –