我将一些文字附加到我的 if myString.count(conv for conv in namingConventionList):
myString= myString.replace(conv, userInput))
elif userInput.startswith('_'):
myString= '%s%s' % (name, userInput)
elif userInputConvention.endswith('_'):
myString= '%s%s' % (userInput, name)
else:
myString= '%s_%s' % (name, userInput)
模型之一的notes
字段中,但是当我保存它时,它不会更新:
ActiveRecord::Base
答案 0 :(得分:9)
想出来并想在将来分享给其他人(很可能是我自己!)。
我不知道这一点,但ActiveRecord无法确定属性是否已更改(即 dirty ),当您将其连接到concat()
或{{1}时}。并且由于ActiveRecord仅保存或更新已更改的属性(即 dirty ),因此它不会更新该属性。
<<
您可以在Rails' API Docs上了解详情。
要解决这个问题,你需要做两件事之一:
让ActiveRecord知道valve.notes
#=> "Level: Top"
valve.notes << "\nDirection: North"
valve.changed?
#=> false
valve.notes_changed?
#=> false
valve.save
#=> true
valve.reload.notes
#=> "Level: Top"
属性已更改(即现在脏):
notes
请勿使用valve.notes << "\nDirection: North"
valve.changed?
#=> false
valve.notes_will_change!
valve.changed?
#=> true
或concat()
附加到您的属性
<<
希望至少能帮助另一个灵魂。
JP