我有一个belongs_to
场景的模型代理。两个模型都有字段options
,我想将Scenario
options
中存储的值与Agent
options
合并,以便我可以@agent.options
并检索Agent
和Scenario
的值。
我试过了:
# in agent.rb
def options
scenario.options.merge(self.options)
end
但这会引发Stack too deep
错误。
任何建议都将不胜感激。谢谢!
答案 0 :(得分:4)
Brennan已经解释过,您的options
方法会自行调用导致Stack to deep
错误的方法。
还有另一种(更低级别)方式来读取活动记录模型的属性:read_attribute
。使用该方法,您可以写:
def options
read_attribute(:options).merge(scenario.options)
end
此方法完全适用于此用例。详细了解overwriting default accessors in the docs。
答案 1 :(得分:2)
由于Agent
有一个名为options
的字段和方法,因此在从类中调用self.options
时,您调用方法而不是检索字段。当您尝试与self.options
合并时,您将无限递归。重命名方法。