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.
