gpt4 book ai didi

ruby - 如何在 Rails 中获取子类数组

转载 作者:数据小太阳 更新时间:2023-10-29 07:10:15 26 4
gpt4 key购买 nike

我有一个模型对象,它是 ActiveRecord 的子类。此外,使用 STI,我定义了该对象的子类,它们定义了不同的类型和行为。结构看起来像这样:

class AppModule < ActiveRecord::Base
belongs_to :app
end

class AppModuleList < AppModule

end

class AppModuleSearch < AppModule

end

class AppModuleThumbs < AppModule

end

现在,在用户可以选择创建新 AppModules 的 View 中,我希望他们从下拉菜单中进行选择。但是,我无法使用 subclasses() 方法获取 AppModule 的子类列表:

<% form_for(@app_module) do |f| %>
<%= f.error_messages %>

<p>
<%= f.label :type %><br />
<%= f.select(:type, options_from_collection_for_select(@app_module.subclasses().map{ |c| c.to_s }.sort)) %>
</p>
<p>
<%= f.submit 'Create' %>
</p>
<% end %>

我得到:

NoMethodError: undefined method `subclasses' for #<AppModule:0x1036b76d8>

如果有任何帮助,我将不胜感激。非常感谢!

最佳答案

看起来好像subclasses等等是recent addition (该方法在不同的时间点存在于不同的类中,但不断被洗牌和删除;该链接似乎是该方法停留的最早点)。如果升级到最新版本的 RoR 不是一个选项,您可以编写自己的 子类 并使用 Class#inherited 填充它(这是 RoR 的 descendents_tracker 所做的)。

关于ruby - 如何在 Rails 中获取子类数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4177245/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com