我有以下代码:
num = 42556
while num > 9
num = num / 10
问题出在class LogFactory < ActiveRecord::Base
after_initialize :inizializza
MESSAGENOTDEFINED = "Msg"
def inizializza
self.happened = Time.current
self.messaggio = MESSAGENOTDEFINED
end
def setMessage(messaggio)
logger = LogFactory.new(:messaggio => messaggio, :happened => self.happened)
logger.save
end
end
变量中。我的意思是,即使我在messaggio
rails中使用param messaggio仍然使用初始化期间定义的.new(:messaggio => messaggio,..
常量。
为什么呢?
答案 0 :(得分:0)
因为您在对象初始化后将MESSAGENOTDEFINED
分配给messaggio
。当您执行.new(:messaggio => 'my_messaggio', ...)
之类的操作时,有两个步骤:
messaggio
将分配'my_messagio'
。after_initialize
回调执行。在此步骤messaggio
将根据您的代码分配MESSAGENOTDEFINED
。看起来你想要使用这样的东西:
def inizializza
happened ||= Time.current
messaggio ||= MESSAGENOTDEFINED
end
这意味着MESSAGENOTDEFINED
只有在假名或尚未初始化时才会分配给messaggio
。此外,self
都是多余的。