我使用具有以下类结构的Ruby on Rails:
class Parent
def self.parse
self.subclasses.each(&:parse) # how to fix this?
end
end
class Child1 < Parent
def self.parse
# ...
end
end
class Child2 < Parent
def self.parse
# ...
end
end
我想做类似的事情:
Parent.parse
=> Child1.parse and Child2.parse
但实际上没有加载子类,因此subclasses
方法给出了空数组。
有一种简单的方法可以完成这项非常常见的任务吗?
答案 0 :(得分:3)
这是因为rails自动加载类:Parent
在他们使用某个地方或需要之前不知道它的子类。
只需从Parent
类手动全部要求它们:
# parent.rb
require 'child1'
require 'child2'
class Parent
def self.parse
self.subclasses.each(&:parse) # how to fix this?
end
end