首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取在be9 acl9中应用了角色的对象列表

获取在be9 acl9中应用了角色的对象列表
EN

Stack Overflow用户
提问于 2009-11-27 19:35:32
回答 2查看 372关注 0票数 1
代码语言:javascript
复制
def self.obj_list(opts = {:include => [] , :exclude => []})
    # Returns an array with all objects with roles applied
    # +:exclude+:: (array,string) optional object type to exclude from list
    # +:include+:: (array,string) optional object type to include in list
    # Example:
    #   Role.obj_list(:include => ["Device", "User"])
    #   Role.obj_list(:exclude => ["User"])

    inc = opts[:include].to_a
    exc = opts[:exclude].to_a

    objs = []
    if inc.empty?

      self.all.each do |r|
        unless r.authorizable_type.nil?
          objs << r.authorizable_type.constantize.find(r.authorizable_id) unless exc.include?(r.authorizable_type)
        end
      end

    else

      self.all.each do |r|
        unless r.authorizable_type.nil?
          objs << r.authorizable_type.constantize.find(r.authorizable_id) if inc.include?(r.authorizable_type)
        end
      end

    end
    objs
  end
EN

回答 2

Stack Overflow用户

发布于 2010-06-23 06:18:10

我不知道,也许你想把宾语和主语联系起来?如果是这样的话,这里有一个教程:https://github.com/be9/acl9/wiki/tutorial:-linking-object-and-subject-with-hmt

票数 0
EN

Stack Overflow用户

发布于 2015-01-23 05:36:37

您可以使用SQL子句在where中执行包含/排除操作:

代码语言:javascript
复制
( inc.empty?
? where.not( :authorizable_type => exc )
: where( :authorizable_type => inc )
).map(&:authorizable)

通过使用authorizable,您将获得Rails自己对多态关联的处理,这将确保只返回实际的对象,因此不需要检查nil

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1808233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档