我的模型有问题。我希望方法使用模型的另一个属性,但在使用之前我想要执行另一个方法(使属性具有值)。这是一个例子:
def medthod_one=(val)
self.value = val
end
def method_two
self.second_value = self.value / 2 #just for example
end
因此,在我的情况下,self.second_value
无效,因为self.value
尚未设置。如何在为此模型提交创建表单后更改这些方法的执行顺序?
答案 0 :(得分:3)
当你只提供foo-bar示例而不是实际代码时,很难想出一个优雅的解决方案,但我的猜测告诉我你可能想要这样的东西:
def som_setter=(val)
self.value = val
end
def method_two
return unless self.value
# perform calculations with 'self.value'.
end
答案 1 :(得分:1)
你为什么不这样做:
def method_one=(val)
self.value = val
self.second_value = val / 2
end
另一方面,如果second_value
始终依赖于self.value
,则可以将其实现为只读属性:
def second_value
self.value / 2
end
答案 2 :(得分:1)
我不太确定我会关注你的问题,但是看看活跃的唱片回调会有所帮助。 http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html
我想你可能需要改写这个问题。