我有我试图加载的帖子,但只想加载那些published_at属性不是nil的帖子。我已经尝试了wiki文档中提到的各种组合,但是保持异常并且不确定我缺少什么。如何告诉CanCan任何用户都可以:阅读已发布publish_at!= nil?
的帖子答案 0 :(得分:3)
在你的Ability.rb中:
can :edit, Post do |post|
post.published_at.nil?
end
如果您真的在谈论CanCan授权而不是查询帖子:)如果您只想查询,范围将在您的Post模型中执行:
scope :not_published, where(:published_at => nil)
编辑:范围为NOT nil:
scope :published, where('published_at is not NULL')
答案 1 :(得分:1)
我认为这有点不同。 Cancan用于授权,而不是查询索引。你会做类似@books = Book.find(:all,:conditions => [“published_at not null”])
配置完成后,您可以检查用户是否能够更新/编辑/创建/销毁/等记录。如果你想列出它们,你会经历它们的正常索引。如果您想添加编辑按钮,如果用户能够修改记录,那么您可以放置if can? :update, book
然后显示编辑按钮。
答案 2 :(得分:0)
只需反思并使用cannot
方法。
# If it is NOT hidden, allow to read
can :read, Post, :hidden_at => nil
# If it is NOT published, disallow the read
cannot :read, Post, :published_at => nil
中的说明调用cannot
方法 AFTER can
方法调用