所以我有一个序列化列:dimensions,在我的迁移中,我想将该字段设置为默认哈希。
我努力了...
create_table :shipping_profiles do |t|
t.string :dimensions_in, :default => {:width => 0, :height => 0, :depth => 0}
and just
t.string :dimensions_in, :default => Hash.new()
但字段最终为空。我如何在创建时为此字段设置默认序列化对象,或者至少确保我的序列化属性始终是哈希?
当 Rails 序列化哈希值以保存在数据库中时,它所做的就是将其转换为 YAML,以便可以将其存储为字符串。要使其在迁移中发挥作用,您所需要做的就是将哈希转换为 yaml...
t.string :dimensions_in, :default => {:width => 0, :height => 0, :depth => 0}.to_yaml
或者,也可以在初始化后将其设置在模型中......
class ShippingProfile < ActiveRecord::Base
after_initialize :set_default_dimensions
private
def set_default_dimensions
self.dimensions_in ||= {:width => 0, :height => 0, :depth => 0}
end
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)