I tried that and while it works for the elements of the array of :job
records, I still have a problem not getting associated records :job_items
@rs[:jobs] = Job.where(:id => [100254,100255]).eager(:job_items).all.to_json
(include: :job_items)
Thanks,
Shreko
On Thursday, 18 April 2019 10:18:06 UTC-6, Jeremy Evans wrote:
>
> On Friday, April 19, 2019 at 12:12:39 AM UTC+9, shreko wrote:
>>
>> I like to use roda's :json plugin for sending JSON API Data where we just
>> send Array/Hash as output of a route. But, in order to take advantage of
>> Sequel Models and associations, I end up with arrays of models and
>> associated models.
>> For example:
>>
>> plugin :json, :classes => [Array, Hash, Sequel::Model]
>>
>> r.get "eager_test" do
>> jobs = Job.where(:id => [100254,100255]).eager(:job_items).all
>> @rs[:jobs] = jobs.map do |v|
>> h = v.to_hash
>> h[:job_items] = v.job_items.map {|ji| ji.to_hash}
>> h
>>
>> end
>> @rs
>> end
>>
>> This works as expected, but I am just wondering if there is a better way
>> to do it, without looping thru. Even though Sequel::Model is specified in
>> :json plugin options, it wouldn't convert Array of models to proper json
>> output, just pure models I guess.
>>
>
> Array#to_json should call #to_json on all elements of the array, so an
> array of Sequel::Model instances should work, as long as you use the Sequel
> json_serializer plugin in the related models.
>
> 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 [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sequel-talk.
For more options, visit https://groups.google.com/d/optout.