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.

Reply via email to