我试图定义一个named_scope我的Rails应用程序中的所有模型。

目前,我已经能够通过编写的ActiveRecord :: Base的一个初始化程序,并把常规方法在那里去接近这一点。 当然,这并不能提供实际的优势,当谈到创建查询链,大概是完成工作的至少轨安永方式。

然而,当我开始尝试并使用的has_many,named_scope,它不工作等.. ActiveRecord的方法。

虽然我理解我的named_scope可能是不正确的,我真的只是想帮助获得规定的named_scope。另外,我目前不感兴趣的任何Ruby ACL宝石。

在初始化/:

class ActiveRecord::Base

  has_many(:permissions)
  named_scope(:acl_check, lambda do |user_id, method|
        {
            :include => :permission,
            :conditions => [
                ["permissions.user_id=?", user_id],
                ["permissions.method=?", method],
                ["permissions.classname=?", self.class.name]
            ]
        }
  end)

    # Conducts a permission check for the current instance.
    def check_acl?(user_id, method)

        # Perform the permission check by User.
        permission_check = Permission.find_by_user_id_and_instance_id_and_classname_and_method(user_id, self.id, self.class.name, method)
        if(permission_check)
            # If the row exists, we generate a hit.
            return(true)
        end

        # Perform the permission check by Role.

        # Otherwise, the permissions check was a miss.
        return(false)

    end

end
有帮助吗?

解决方案

has_many将可能无法工作,因为它是在类体内评估和预期外键是在其被评估,而不是继承类的类。 (ID为例如博客模型= 42可以具有存储有blog_id = 42,被以使其工作所需的密钥基于所述类名许多注释型号)

命名范围应该工作,如果它是正确的。

在继承的方法应该工作。

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