Я использую ActiveRecord::ConnectionAdapters::PostgreSQLAdapter
в приложении Rails. Предположим, у меня есть схема:Есть ли способ сериализации свойств JSON ActiveRecord с использованием HashWithIndifferentAccess?
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 автоматически десериализации jsonb типы с использованием HashWithIndifferentAccess?
'def data; HashWithIndifferentAccess.new (супер); end' является обходным путем, если ничего лучше не приходит. –
@muistooshort другой способ выразить это 'super.with_indifferent_access'. –