I can do that this weekend.

I guess the other question is, is this the best way to accomplish this? I
tried using association_join instead but to_json failed because of the
extra attributes from the User model mixed with the Order model.

Thoughts?

On Fri, Aug 31, 2018, 18:23 Jeremy Evans <[email protected]> wrote:

> On Friday, August 31, 2018 at 2:25:30 PM UTC-7, Elanor Riley wrote:
>>
>> I'm experiencing some weird behavior with to_json and eager loading and
>> eager graph.
>>
>> Everything works well with eager loaded relationships and to_json on a
>> model, for instance
>>
>> Order.eager(:invoice, :confirmations, :user)
>> .to_json(
>>     {
>>       :except => [:sales_line, :table_dlv_addr],
>>       :include => {
>>         :user => {:only => :name},
>>         :invoice => {:only => :id},
>>         :confirmations => {:only => :id}
>>       }
>>     }
>> )
>>
>> // Resulting JSON data
>> {
>>  confirmations:[{id: 4873}]
>>  created_at:"2017-06-23 08:40:41 -0400"
>>  document_status:"invoice"
>>  id:5135
>>  invoice:{id: 9698}
>>  notes:""
>>  process:true
>>  receipt_date_requested:"2017-08-31"
>>  sales_id:"SO00007950"
>>  status:"approved"
>>  total_weight:42374
>>  updated_at:"2017-09-06 00:09:02 -0400"
>>  user:{name:"John Doe"}
>>  user_id:138
>> }
>>
>>
>> However, our project requirements have changed and I now need to be able
>> to select and filter based on the User data (for example):
>>
>> Order.eager_graph(:user) # Need to query user data
>> .eager(:invoice, :confirmations)
>> .where('user.name = "John Doe"') # Need to query user data
>> .to_json(
>>     {
>>       :except => [:sales_line, :table_dlv_addr],
>>       :include => {
>>         :user => {:only => :name},
>>         :invoice => {:only => :id},
>>         :confirmations => {:only => :id}
>>       }
>>     }
>> )
>>
>> The JSON response now only includes order attributes, and my exclusions
>> are completely ignored, and the associated eager loaded relationships are
>> not included (though queries are still run to get their results)
>>
>> {
>>  // Confirmations missing
>>  created_at:"2017-06-23 08:40:41 -0400"
>>  document_status:"invoice"
>>  id:5135
>>  // Invoice data missing
>>  notes:""
>>  process:true
>>  receipt_date_requested:"2017-08-31"
>>  sales_id:"SO00007950"
>>  sales_lines: [...] // Supposed to be excluded
>>  status:"approved"
>>  table_dlv_addr: {...} // supposed to be excluded
>>  total_weight:42374
>>  updated_at:"2017-09-06 00:09:02 -0400"
>>  // User Data missing
>>  user_id:138
>> }
>>
>>
> That does look strange.  json_serializer is supposed to work with
> eager_graph, and there are specs that test that.  Could you put together a
> minimal, self contained, reproducible example that I can test with (or add
> a failing spec/integration test)?
>
> Thanks,
> Jeremy
>
> --
> You received this message because you are subscribed to a topic in the
> Google Groups "sequel-talk" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/sequel-talk/CxASW9C-JcA/unsubscribe.
> To unsubscribe from this group and all its topics, 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.
>

-- 
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.

Reply via email to