我已经在 Rails 中实现了继承,并从 Person 类中获取子代和孙代。
但现在我想使用简单的 ruby 类从 Person 类获取子类和孙子类,而不使用 ActiveRecord。
我已经成功地从一个人对象中获取了 child 。请指导我如何从 Person 实例中获取孙子。
class Person
attr_accessor :name, :age
attr_reader :ref
def initialize(name, ref)
@name = name
@ref = ref
end
end
class Parent < Person
attr_reader :children
def initialize(names = %w(A B C))
@children = names.map do |n|
Person.new(n, self)
end
end
end
bar = Parent.new.children.first
bar.ref
最佳答案
如果 parent 、 child 和孙子之间没有行为差异,那么可以用一个类来建模:
class Person
attr_reader :children
attr_reader :name
def initialize(name, children: [])
@name = name
@children = children
end
def grandchildren
@children.flat_map(&:children)
end
end
我们添加了一个 #grandchildren 方法,用于询问每个 child 的 child 情况。这个例子展示了它是如何工作的:
sally = Person.new("Sally")
fred = Person.new("Fred", children: [sally])
mary = Person.new("mary", children: [fred])
p mary.children.map(&:name) # => ["Fred"]
p mary.grandchildren.map(&:name) # => ["Sally"]
关于ruby-on-rails - 在简单的 ruby 中从 Person 实例获取孙子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38901646/