0

Paperclip を使用していくつかのファイルを設定しましexpiring_urlた。それらは正常に機能しています。

CanCan 2.0 をexpiring_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それが機能しない理由であることがわかります。これを機能させるために、これに関連付けられた paperclip expiring_url オブジェクトを指定する方法がわかりません。

これを行う方法はありますか?

4

2 に答える 2

2

このページのステートメントによると、カンカンは明らかに条件が実際のデータベース列である必要があります。

これらの条件では、データベース列のみを使用することが重要です

これはペーパークリップの制限ではなく、cancan です (私はかなり気に入っていますが、誤解しないでください)。

于 2012-10-26T17:48:06.283 に答える
0

私は CanCan 1.6.x を使用していますが、2.0 ドキュメントのDefining Abilitiesの下で、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 に答える