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