我有以下几点:
User has_many Listings
Listing has_many Offers非常基础。用户可以发布列表,而其他用户可以对这些列表进行报价。
在每个列表视图中,您可以看到列表的描述,以及它收到的所有优惠的列表。此外,在这个相同的视图中,有一个表单允许用户在此列表上提供报价。
当然,如果我看的是我自己的列表,我不希望能够提出报价。因此,我尝试在Offer的create方法上添加一个限制,仅当它来自与发布此清单的用户不同的用户时才允许访问。在我的能力类中,应该是这样的:
can :create, Offer if listing.user != user这不起作用,因为没有在任何地方定义listing。当用户查看某个listing时会调用此方法,那么,如何将当前的列表传递给cancan方法以有效地检查此限制?
谢谢。
发布于 2011-09-19 10:08:56
移动CanCan能力检查,直到您创建新提议的时间点之后。例如。
#listing.rb
load_and_authorize_resource :except => :create
def create
@offer = #whatever it is you want to do
authorize! :create, @offer
endhttps://stackoverflow.com/questions/7465072
复制相似问题