我的功能如下:
def set_blah
self.prop1 = .... if new_record?
end
我希望能够强制进行更新,即使它在某些情况下不是新记录,我可以在这里添加一个可选参数,以便我已经不会破坏所有其他调用吗?
即
def set_blah ( force )
self.prop1 = ... if new_record? || force
end
答案 0 :(得分:6)
是的,默认参数只在方法签名中指定:
def set_blah(force=false)
do_something if new_record? || force
end
您可以尝试使用选项使您的调用序列更具可读性:
def set_blah(options = {:force => false})
do_something if new_record? || options[:force]
end
通过明确指定它,您的调用序列类似于:
set_blah
或
set_blah(:force => true)
这似乎让@ set_blah @的呼叫点更加清晰。此外,您的rdoc将显示方法的默认参数,因此它是一种自我记录。
答案 1 :(得分:0)
是的,理论上您可以按原样使用您的代码。当你不想强迫时,只需使用set_blah(nil)。
答案 2 :(得分:0)
当然,只需将force
设为默认参数,这样您就不需要更改现有的此方法调用:
def set_blah(force = false)
self.prop1 = ... if new_record? or force
end