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