相关疑难解决方法(0)

在Ruby中查找类的所有后代

我可以轻松地提升Ruby中的类层次结构:

String.ancestors     # [String, Enumerable, Comparable, Object, Kernel]
Enumerable.ancestors # [Enumerable]
Comparable.ancestors # [Comparable]
Object.ancestors     # [Object, Kernel]
Kernel.ancestors     # [Kernel]
Run Code Online (Sandbox Code Playgroud)

有没有办法下降层次结构?我想这样做

Animal.descendants      # [Dog, Cat, Human, ...]
Dog.descendants         # [Labrador, GreatDane, Airedale, ...]
Enumerable.descendants  # [String, Array, ...]
Run Code Online (Sandbox Code Playgroud)

但似乎没有一种descendants方法.

(出现这个问题是因为我想找到Rails应用程序中的所有模型,这些模型来自基类并列出它们;我有一个控制器可以使用任何这样的模型,我希望能够添加新模型无需修改控制器.)

ruby

138
推荐指数
6
解决办法
6万
查看次数

RoR:MyModel.descendants在第一次调用后在视图中返回[]?

我想在视图中显示MyModel子类的选择列表.它还没有工作,所以为了进行健全性检查,我把它包括在我的观点中:

<%= MyModel.descendants %>
Run Code Online (Sandbox Code Playgroud)

第一时间,我渲染后重新启动服务器这个页面,它显示后裔的名单(有六个).随后的所有时间,它都会显示为空列表[].

FWIW,我require在初始化器中有一个声明:

Dir[Rails.root.join("app/models/my_models/**/*.rb").to_s].each {|f| require f}
Run Code Online (Sandbox Code Playgroud)

......我已经证实他们已经被要求了.

@($%&正在发生什么?

activerecord ruby-on-rails-3

9
推荐指数
3
解决办法
2451
查看次数

标签 统计

activerecord ×1

ruby ×1

ruby-on-rails-3 ×1