我有 rails_authorization_plugin 的启动和运行模式

什么是执行我的网站上的权限检查的最佳方式?

我有复杂的,用于当一个对象的实例应该是可见的条件下,是有一种有效的方式将它们链在一起,因此我不读取数据的多组和研磨我的DB作为遍历返回的数据的结果过滤它?

有帮助吗?

解决方案

有是一种有效的方法:确保你只运行一个查询,该查询运行的回报正是你想要的对象。说起来容易做,当然。

要处理的一种方法是使用范围来构建你的条件。

@posts = @thread.posts.not_deleted.this_week.not_secret

如果所有这些方法都是范围,那将是只有一个查询。

如果你的条件太复杂,很容易让他们范围,你应该只写返回可见对象的用户的方法。

class User
def posts_for(thread)
  if is_admin?
    thread.posts
  elsif thread.owner == self
    thread.posts.not_deleted
  else
    Post.find(:all, :conditions => something_complicated(thread, self))
  end
end
end

我的应用程序有很多类型的对象,而且非常复杂的权限的,所以我们抓住这样与method_missing的电话,他们的路线,知道如何使所有不同的查询权限库。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top