Rails 应该如何获得整个项目中所有 ActiveRecord::Base 模型的名称

wuwx · 2013年01月08日 · 最后由 zhangxun 回复于 2013年01月14日 · 4657 次阅读

想在后台实现授权,想自动发现所有 ActiveRecord::Base 的模型,并对 crud 操作进行授权 另外有没有什么现成的 gem 可以实现后台配置 cancan 权限的捏?

对 ActiveRecord 进行 mokey patch,类似这样——

1.9.3p327 :001 > class Foo
1.9.3p327 :002?>   def self.inherited(subclass)
1.9.3p327 :003?>     @@_subclasses ||= []
1.9.3p327 :004?>     @@_subclasses << subclass
1.9.3p327 :005?>   end
1.9.3p327 :006?> end
 => nil 
1.9.3p327 :007 > class Child1 < Foo;end
 => nil 
1.9.3p327 :008 > class Child2 < Foo;end
 => nil 
1.9.3p327 :009 > Foo.class_variable_get "@@_subclasses"
 => [Child1, Child2] 

ActiveRecord::Base.subclasses

#1 楼 @fsword #2 楼 @quakewang

Model 没有被调用之前不显示……

#3 楼 @wuwx Production 环境应该没问题

#2 楼 @quakewang 原来有现成的了

#2 楼 @quakewang 是 protected 的吧,这个方法。

yeyong14 如何做到像 rails_admin 调用所有模型 提及了此话题。 04月03日 10:57
需要 登录 后方可回复, 如果你还没有账号请 注册新账号