Re: SQLite3 json serializer and naked
Thank you!! On Sunday, December 12, 2021 at 5:56:03 PM UTC-5 Jeremy Evans wrote: > On Sun, Dec 12, 2021 at 2:16 PM jaso...@gmail.com > wrote: > >> I'm experimenting using SQLite with some json APIs. Since there's no >> out-of-the-box support for json columns, I'm storing loosely-structured >> data as json in a Text column using the serialization plugin: >> >> plugin :serialization >> serialize_attributes :json. :transaction_data, :other_attributes >> >> This works fine for model instances ( some_instance.transaction_data). >> But I fequently use .naked when I need a small subset of data from a lot >> of rows, but the serialization plugin doesn't seem to run when doing this. >> >> I tried doing some_dataset.all.map(&:to_hash) but ended up with the same >> thing - just json string values. >> >> I can understand the naked method pulling the data in as-is, but should >> the `to_hash` method be using the defined serialization? >> > > serialization is a model plugin, not a dataset extension. The > serialization and deserialization happen at the model layer, so if you use > naked to skip the model layer, you skip the deserialization. Also, > Model#to_hash just returns the column values (serialized), it doesn't > include the deserialized values. You may want: > > dataset.all.map do |v| > hash = v.values.dup > hash[:transaction_data] = v.transaction_data > hash[:other_attributes] = v.other_attributes > hash > end > > Thanks, > Jeremy > -- You received this message because you are subscribed to the Google Groups "sequel-talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to sequel-talk+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/sequel-talk/a035911f-fe1c-4192-b718-b255f11c8791n%40googlegroups.com.
Re: SQLite3 json serializer and naked
On Sun, Dec 12, 2021 at 2:16 PM jaso...@gmail.com wrote: > I'm experimenting using SQLite with some json APIs. Since there's no > out-of-the-box support for json columns, I'm storing loosely-structured > data as json in a Text column using the serialization plugin: > > plugin :serialization > serialize_attributes :json. :transaction_data, :other_attributes > > This works fine for model instances ( some_instance.transaction_data). > But I fequently use .naked when I need a small subset of data from a lot > of rows, but the serialization plugin doesn't seem to run when doing this. > > I tried doing some_dataset.all.map(&:to_hash) but ended up with the same > thing - just json string values. > > I can understand the naked method pulling the data in as-is, but should > the `to_hash` method be using the defined serialization? > serialization is a model plugin, not a dataset extension. The serialization and deserialization happen at the model layer, so if you use naked to skip the model layer, you skip the deserialization. Also, Model#to_hash just returns the column values (serialized), it doesn't include the deserialized values. You may want: dataset.all.map do |v| hash = v.values.dup hash[:transaction_data] = v.transaction_data hash[:other_attributes] = v.other_attributes hash end Thanks, Jeremy -- You received this message because you are subscribed to the Google Groups "sequel-talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to sequel-talk+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/sequel-talk/CADGZSSfNwDCn1aXEcQhMSfqYMrh_nP2kEtP1gXiF_UdSrDUBYw%40mail.gmail.com.
SQLite3 json serializer and naked
I'm experimenting using SQLite with some json APIs. Since there's no out-of-the-box support for json columns, I'm storing loosely-structured data as json in a Text column using the serialization plugin: plugin :serialization serialize_attributes :json. :transaction_data, :other_attributes This works fine for model instances ( some_instance.transaction_data). But I fequently use .naked when I need a small subset of data from a lot of rows, but the serialization plugin doesn't seem to run when doing this. I tried doing some_dataset.all.map(&:to_hash) but ended up with the same thing - just json string values. I can understand the naked method pulling the data in as-is, but should the `to_hash` method be using the defined serialization? Using Sequel version 5.51.0 Thanks as always for the help! -- You received this message because you are subscribed to the Google Groups "sequel-talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to sequel-talk+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/sequel-talk/9da5f0b8-ee01-43e5-a3b4-e17ae798dc99n%40googlegroups.com.