加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 有没有办法使用HashWithIndifferentAccess序列

发布时间:2020-12-17 03:41:45 所属栏目:百科 来源:网络整理
导读:我在Rails应用程序中使用ActiveRecord :: ConnectionAdapters :: PostgreSQLAdapter.假设我有一个架构: create_table "foo",id: :bigserial,force: :cascade do |t| t.string "name" t.jsonb "data",null: false end 现在假设我运行以下代码: class Foo Ac
我在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.to_json
  end

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

完全信用 – 没有谷歌搜索 – 去http://nandovieira.com/using-postgresql-and-jsonb-with-ruby-on-rails.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读