Many thanks Jeremy. Given your suggestion I have managed to solve this
issue in my use case, by adding a :conditions => {:active => true} to the
association.
Given the existing options of :except, :include, :only and :root available
in to_json(), would an additional :where option be a natural feeling
addition? That said, I am not familiar with the complexities of the API so
appreciate that may not be possible or a good idea.
Thanks again for your help, it is greatly appreciated.
Paul
On Friday, August 29, 2014 12:14:32 AM UTC+1, Jeremy Evans wrote:
>
> On Thursday, August 28, 2014 12:22:10 PM UTC-7, Paul Carew wrote:
>>
>> Hi
>>
>> Hopefully this is an easy one but one I've been puzzling over it for a
>> while now...
>>
>> When including associations with the json_serializer is it possible to
>> modify the association criteria?
>>
>> For example if I have:
>>
>> Episode.where(:user_id => user).to_json(:include => :colleagues)
>>
>> How might I go about including only those :colleagues that have a
>> boolean column named "active" set to true?
>>
>> Using .join() I understandably get NoMethodErrors on the join columns
>> when doing to_json, as there are no corresponding instance methods on
>> Episode.
>>
>> Is there a way around this?
>>
>
> I'm not sure the API currently supports something like that. We could
> expand the API with additional options to support it, but it's already a
> fairly complex API. I suppose the natural way to handle it if we were to
> expand the API would be:
>
> Episode.where(:user_id => user).to_json(:include
> =>{:colleagues=>{:callback=>proc{|ds| ds.where(:active)}}})
>
> The problem is that is already valid and used to pass the :callback option
> to the Colleague#to_json method.
>
> You could have an active_colleagues association that just returns active
> colleagues, but that's probably not going to give you the json you want
> (using active_colleagues as the key instead of colleagues). We could
> support an additional option like :key_name to work around that, but it has
> the same issues as adding :callback.
>
> For advanced use cases, you may be better off using a different tool, such
> as rabl.
>
> I'm open to feedback in terms of expanding json_serializer options, so if
> anyone has opinions, please speak up.
>
> 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 http://groups.google.com/group/sequel-talk.
For more options, visit https://groups.google.com/d/optout.