1.MySQL不支持文本列的默认值(所以不能使用migration指定默认值)
2.以下代码
after_initialize do |obj|
obj.column1 ||= "default_value"
end
是越野车。例如,它将覆盖以下情况下明确指定的值:MyModel.new(column1: nil)
或MyModel.new { |obj| obj.column1 = nil }
所以我能想到的唯一简单且或多或少正确的方法是:
after_initialize do |obj|
obj.column1 ="default_value" if obj.new_record? and !obj.column1_changed?
end
你能提出一个更好的解决方案吗?