我在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'
解决方法
|您可以使用自定义序列化程序,以便您也可以使用符号访问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.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。