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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |