【问题标题】:Cancan Ability during the creation of new objects创建新对象期间的康康能力
【发布时间】:2011-09-18 23:06:15
【问题描述】:

我有以下几点:

User has_many Listings
Listing has_many Offers

非常基本。用户可以发布列表,其他用户可以对这些列表进行报价。

在每个列表视图中,您都可以看到列表的描述,以及它收到的所有报价的列表。此外,在同一视图中,还有一个表单可以让用户在此列表中提出要约。

当然,如果我正在查看自己的列表,我不希望能够提出要约。因此,我正在尝试对 Offer 的 create 方法添加一个限制,以仅允许来自与发布此清单的用户不同的用户访问它。在我的能力类中,它会是这样的:

can :create, Offer if listing.user != user

这不起作用,因为listing 没有在任何地方定义。当用户正在查看某个listing 时会调用该方法,那么,如何将当前的Listing 传递给cancan 方法以有效检查此限制?

谢谢。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 cancan


    【解决方案1】:

    将 CanCan 能力检查移动到您创建新报价的那一点之后。例如

    #listing.rb
    load_and_authorize_resource :except => :create
    
    def create
        @offer = #whatever it is you want to do
        authorize! :create, @offer
    
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-06
      相关资源
      最近更新 更多