Ruby on Rails的 - 呼叫从
问题描述:
我使用Ruby on Rails的下面的类结构中的父类每个子类的方法: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
方法给出空数组。
有没有简单的方法来做这个非常普通的任务?
答
发生这种情况是因为rails自动载入类:Parent
在使用某处或需要之前不知道其子类。
刚从Parent
类手动要求他们都:
# parent.rb
require 'child1'
require 'child2'
class Parent
def self.parse
self.subclasses.each(&:parse) # how to fix this?
end
end
你想acomplish什么?父类不能访问孩子的。也许你需要以另一种方式完成。请参阅http://stackoverflow.com/questions/11074175/how-to-return-new-instance-of-subclass-while-initializing-parent-class – tegon