[英]get a list of objects with roles applied in be9 acl9
I think in something like this: 我认为是这样的:
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
You can use where
clauses to do the include/exclude stuff in SQL: 您可以使用where
子句在SQL中执行包含/排除的操作:
( inc.empty?
? where.not( :authorizable_type => exc )
: where( :authorizable_type => inc )
).map(&:authorizable)
By using authorizable
you will get Rails's own handling of polymorphic associations, which will ensure that only actual objects are returned, so there's no need to check for nil
通过使用authorizable
您将获得Rails自己对多态关联的处理,这将确保仅返回实际的对象,因此无需检查nil
I don't know, maybe you want to link the object and subject? 我不知道,也许您想链接对象和主题? If is this, here are a tutorial for that: https://github.com/be9/acl9/wiki/tutorial:-linking-object-and-subject-with-hmt 如果是这样,这里有一个教程: https : //github.com/be9/acl9/wiki/tutorial : -linking-object-and-subject-with-hmt
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.