Rails:模型方法执行序列

时间:2009-04-07 09:06:30

标签: ruby-on-rails ruby model

我的模型有问题。我希望方法使用模型的另一个属性,但在使用之前我想要执行另一个方法(使属性具有值)。这是一个例子:

 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尚未设置。如何在为此模型提交创建表单后更改这些方法的执行顺序?

3 个答案:

答案 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

我想你可能需要改写这个问题。