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

wuwx · January 08, 2013 · Last by zhangxun replied at January 14, 2013 · 4657 hits

想在后台实现授权,想自动发现所有 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 in 如何做到像 rails_admin 调用所有模型 mention this topic. 03 Apr 10:57
You need to Sign in before reply, if you don't have an account, please Sign up first.