On Sun, Dec 12, 2021 at 2:16 PM jaso...@gmail.com <jason...@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.