Ruby on rails 在创建新对象时可以使用Cancan功能
我有以下资料:Ruby on rails 在创建新对象时可以使用Cancan功能,ruby-on-rails,ruby-on-rails-3,cancan,Ruby On Rails,Ruby On Rails 3,Cancan,我有以下资料: User has_many Listings Listing has_many Offers 非常基本。用户可以发布列表,其他用户可以对这些列表进行报价 在每个列表视图中,您可以看到列表的描述,以及它收到的所有报价的列表。同样,在这个视图中,有一个表单允许用户在此列表上提供报价 当然,如果我在看自己的上市公司,我不想出价。因此,我试图对要约的create方法添加一个限制,仅当它来自与发布此列表的用户不同的用户时才允许访问它。在我的能力课上,应该是这样的: can :create
User has_many Listings
Listing has_many Offers
非常基本。用户可以发布列表,其他用户可以对这些列表进行报价
在每个列表视图中,您可以看到列表的描述,以及它收到的所有报价的列表。同样,在这个视图中,有一个表单允许用户在此列表上提供报价
当然,如果我在看自己的上市公司,我不想出价。因此,我试图对要约的create方法添加一个限制,仅当它来自与发布此列表的用户不同的用户时才允许访问它。在我的能力课上,应该是这样的:
can :create, Offer if listing.user != user
这不起作用,因为列表没有在任何地方定义。当用户查看某个列表时,将调用此方法,因此,如何将此当前列表传递给cancan方法以有效地检查此限制
谢谢。将CanCan能力检查移动到您创建新优惠的时间点之后。例如
#listing.rb
load_and_authorize_resource :except => :create
def create
@offer = #whatever it is you want to do
authorize! :create, @offer
end