ruby on rails - Stop nesting data of the active model serializer gem -


i using active model serializer gem, , works fine now. have stumbled upon issue, wan't stop nesting of data retrieved.

lets have 3 models:

users has_many orders has_many addresses.

normally in users serializer class have have has_many orders model, , in orders model serializer have has_many relationship addresses.

i have users controller, don't want orders out, not nested addresses. can done without creating whole new serializer class?

update, clarify:

i have following 3 models:

class user < activerecord::base   has_many orders  end  class orders < activerecord::base   belongs_to user   has_many addresses end  class addresses < activerecord::base   belongs_to order end 

i have 3 serializers identical models.

for orders api retrieve addresses well, when query users wants associated orders , not addresses. when query users both returns orders , addresses, since have has_many addresses orders.

is option create separate serializers 2 options (it doesn't feel dry)?

you can use default_serializer_options method defines serializer options serializers , children used controller.

#users_controller.rb class userscontroller < applicationcontroller   def default_serializer_options     { include_addresses: false }   end end 

then override initialize method in order serializers check serializer options include_addresses flag:

# order_serializer.rb class orderserializer < activemodel::serializer   def initialize(object, options = {})     options.reverse_merge! include_addresses: true # default should include addresses     @include_addresses = options[:include_addresses]     super   end    def include_addresses?     @include_addresses   end end 

and that's it. specify option in every controller don't need addresses nested.


Comments

Popular posts from this blog

php - Submit Form Data without Reloading page -

linux - Rails running on virtual machine in Windows -

php - $params->set Array between square bracket -