0

これに関する CanCan のドキュメントは、少しわかりにくいように見えました。

次の例を示します。

can :read, Article, Article.published do |article|
  article.published_at <= Time.now
end

publishedスコープのようです。しかし、ブロックは冗長ではありませんか? 公開された記事のみを照会し、ブロックは現在の時間に基づいて記事をフィルタリングします。これは、将来公開される記事がないと仮定すると、まったく同じようです。

私は現在、次のようなことをしています:

can :validate, User.without_validation_finished
can :invalidate, User.with_validation_requested

そして、期待どおりに機能しているようです。つまり、これらのスコープ外のユーザーの場合、それらのアクションにアクセスできません。現在行っているようにスコープを使用するか、これをブロックに変更する必要がありますか? これにもいくつかのパフォーマンスの違いがあるかもしれないと思います

4

1 に答える 1

1

特異冠詞 ( ) が存在しないため、スコープは index アクションに使用されます@article。が存在する場合、ブロックは show アクションに使用され@articleます。

于 2013-04-28T00:22:06.173 に答える