0

关于这方面的 CanCan 文档似乎有点混乱。

它提供了这个例子:

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

wherepublished似乎是一个范围。但是块不是多余的吗?它只查询已发布的文章,然后块根据当前时间过滤文章,这似乎完全一样,假设将来没有文章发布

我目前正在做这样的事情:

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

它似乎按预期工作,即对于这些范围之外的用户,我无法访问这些操作。我应该像现在这样使用范围,还是将其更改为块?我想这也可能有一些性能差异

4

1 回答 1

1

范围用于索引操作,因为不存在单数冠词 ( @article)。该块用于显示操作,当@article存在时。

于 2013-04-28T00:22:06.173 回答