0

我使用 Paperclip 设置了一些文件expiring_url。那些工作正常。

我尝试使用 CanCan 2.0expiring_url仅允许使用以下代码签名的成员

# /app/models/ability.rb
class Ability
  include CanCan::Ability

  def initialize(user)
    user ||= User.new  # guest user
    can :read, :movies
    cannot :read, :movies, :expiring_url

    if user.persisted?
      can :read, :movies, :expiring_url
    end

  end
end

MoviesController.rbload_and_authorize_resource所有用户仍然可以下载电影。

expiring_url不是的属性,Movie我可以看到这就是为什么不工作的原因。我不确定如何指定与此关联的回形针 expiring_url 对象以使其工作。

知道怎么做吗?

4

2 回答 2

2

根据页面上的声明,Cancan 显然要求条件是实际的数据库列:

仅对这些条件使用数据库列很重要

这不是回形针的限制,它是 cancan(我非常喜欢它,不要误会我的意思)。

于 2012-10-26T17:48:06.283 回答
0

我使用 CanCan 1.6.x,但在2.0文档中定义能力下,Ryan 说

current_user 传入允许您根据用户属性定义权限。

所以如果你有一个 current_user 不会像下面这样为你工作吗?

if user
  can :read, :movies, :expiring_url
else
  can :read, :movies
end

你能提供更多关于“expiring_url”是什么的信息吗?我刚刚意识到上面的内容可能对你也不起作用,因为expiring_url听起来不像一个模型。

于 2012-10-31T02:03:48.030 回答