gpt4 book ai didi

ruby-on-rails - ActiveRecord迁移中序列化列的默认值

转载 作者:行者123 更新时间:2023-12-03 13:16:47 24 4
gpt4 key购买 nike

所以我有一个序列化的列:dimensions,在迁移中,我想将字段设置为默认哈希。

我努力了...

create_table :shipping_profiles do |t|
t.string :dimensions_in, :default => {:width => 0, :height => 0, :depth => 0}


而只是

t.string :dimensions_in, :default => Hash.new()


但是这些字段最终为空。如何在创建时为此字段设置默认的序列化对象,或者至少确保我的序列化属性始终是哈希?

最佳答案

当Rails序列化哈希以保存到db中时,它所做的只是将其转换为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

关于ruby-on-rails - ActiveRecord迁移中序列化列的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4943435/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com