所以我想知道是否有更好的方法来做到这一点。我有一个父类,有三个1对1的关系,孩子。
class Parent
has_one :child_one
has_one :child_two
has_one :child_three
...
end
然后在每个子对象中我陈述belongs_to :parent
,现在ChildOne有attribute1
,attribute2
,...
,attribute30
等。
我正在使用一个使用yaml构建计算的gem,但它只能访问Parent类的表或模型。这意味着我需要从ChildOne类中获取所有属性,我必须像这样拉
def calculation_one
cal_one = self.child_one.attribute1
end
然后继续。这意味着我将拥有一个只是链接子属性的模型。有没有更好的方法呢?
更新
我正在寻找的是一种基本上attr_accessor
子类的方法吗?
class Parent
attr_accessor :child_one, :attribute1
end
person = Parent.new
person.attribute1 = "awesome"
person.attribute1 # => "awesome"
答案 0 :(得分:3)
我认为您正在寻找的是rails中的Delegate
模块:您可以调用delegate
让相关模型响应方法调用:
class Parent < ActiveRecord::Base
has_one :child_one
delegate :attribute1, to: :child_one
end