我在子目录中有一堆模型,它继承自模型根目录中的模型。我希望能够在另一个列出每个继承的模型类的模型中设置一个类变量。
即
@@groups = sub_models.map do { |model| model.class.to_s }
不确定如何获取此信息...
答案 0 :(得分:0)
有一个完整的答案here。基本上,你可以通过文件或猴子补丁类(或ActiveRecord)。这至少是两种方式。
编辑:第二个想法,Rails不会在必要时加载你的模型,所以虽然“文件”方式似乎很弱,但它可能是你唯一的选择(除非你想在你的模特本身。)
答案 1 :(得分:0)
在Rails中,在生产环境中,这应该可行
Object.subclasses_of ClassInModelDir
你必须手动加载文件如果Rails.env.development?
答案 2 :(得分:0)
除非您预先加载后代模型,否则您将无法执行此操作。这就是为什么重新设计代码以使用Class#ancestors
而不是descendants
(后代不是核心Ruby特性)的谨慎原因。