如何在单表继承上使用“子项”进行选择

时间:2018-07-26 18:05:49

标签: ruby-on-rails ruby

我创建了一个名为Source的单表继承实体。它有很多特定的孩子(类型)。例如MonsterSource,IndeedSource,FooSource ...

class Source < ApplicationRecord
    has_many :job_offers
    def process
        puts 'Process from Source'
    end
end

class MonsterSource < Source
end

class FooSource < Source
end

在源的编辑视图中,我想创建一个包含该源的所有“子级”(类型)的Select。例如,我要在编辑源时从选择按钮中选择“ Monster Source,Indeed Source和Foo Source”。

有可能吗?如果是,怎么办?

1 个答案:

答案 0 :(得分:1)

内部源类:

def self.types
 ObjectSpace.each_object(Class).select { |klass| klass < self }
end

然后在您看来:

 <%= select_tag :source_type, options_for_select(Source.types) %>