如何通过单表继承访问父属性?

时间:2013-10-17 13:16:05

标签: ruby-on-rails mongoid single-table-inheritance

我正在将STI用于一个项目,我希望每个模型都有一个返回哈希的方法。该哈希是该模型的特定配置文件。我希望每个子模型检索其父级的哈希并将其添加到自己的哈希中。这是下面的一个例子

class Shape
 include Mongoid::Document
 field :x, type: Integer
 field :y, type: Integer
 embedded_in :canvas

 def profile
   { properties: {21} }
 end
end



class Rectangle < Shape
 field :width, type: Float
 field :height, type: Float

 def profile
   super.merge({ location: {32} })
 end
end

我正在试图弄清楚如何让Rectangle的profile方法返回Shape自己的+。它应该导致

(properties => 21, location => 32)

知道如何从继承的子进程中访问父进程吗?它只是超级?在过去的几天里一直坚持这一点。任何帮助非常感谢!

1 个答案:

答案 0 :(得分:0)

是的,就这么简单。 :-)你在{21}{32}中只得到了几个不正确的文字。

以下作品:

class Shape

 def profile
   { properties: 21 }
 end
end


class Rectangle < Shape

 def profile
   super.merge({ location: 32 })
 end
end

rect = Rectangle.new
puts rect.profile # => {:properties => 21, :location => 32}