gpt4 book ai didi

ruby-on-rails - 有没有办法使用 HashWithIndifferentAccess 序列化 ActiveRecord 的 JSON 属性?

转载 作者:数据小太阳 更新时间:2023-10-29 07:22:59 26 4
gpt4 key购买 nike

我在 Rails 应用程序中使用 ActiveRecord::ConnectionAdapters::PostgreSQLAdapter。假设我有一个架构:

  create_table "foo", id: :bigserial, force: :cascade do |t|
t.string "name"
t.jsonb "data", null: false
end

现在假设我运行以下代码:

class Foo < ActiveRecord::Base
self.table_name = :foo
end

my_foo = Foo.create!(:name => 'foobar', :data => {:a => 'hello'})
my_foo = Foo.where(:name => 'foobar').first!
puts my_foo.data[:a]
puts my_foo.data['a']

输出将是:

# nil
# 'hello'

是否可以要求 ActiveRecord 使用 HashWithIndifferentAccess 自动反序列化 jsonb 类型?

最佳答案

|您可以使用自定义序列化程序,这样您也可以使用符号访问 JSON 对象。

# app/models/user.rb
class User < ActiveRecord::Base
serialize :preferences, HashSerializer
end

# app/serializers/hash_serializer.rb
class HashSerializer
def self.dump(hash)
hash
end

def self.load(hash)
(hash || {}).with_indifferent_access
end
end

完整信用 - 无谷歌搜索 - 转至 http://nandovieira.com/using-postgresql-and-jsonb-with-ruby-on-rails .

关于ruby-on-rails - 有没有办法使用 HashWithIndifferentAccess 序列化 ActiveRecord 的 JSON 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28682428/

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