关于此的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
它似乎按预期工作,即对于那些范围之外的用户,我无法访问这些操作。我应该使用像我目前正在做的范围,还是将其更改为块?我想这也可能有一些性能差异
答案 0 :(得分:1)
范围用于索引操作,因为没有单独的文章(@article
)存在。当@article
存在时,该块用于show动作。