Module: Datasource::ConsumerAdapters::ActiveModelSerializers
- Defined in:
- lib/datasource/consumer_adapters/active_model_serializers.rb
Defined Under Namespace
Modules: ArraySerializer
Class Method Summary collapse
- .get_serializer_for(klass, serializer_assoc = nil) ⇒ Object
- .to_datasource_select(result, klass, serializer = nil, serializer_assoc = nil, adapter = nil) ⇒ Object
Class Method Details
.get_serializer_for(klass, serializer_assoc = nil) ⇒ Object
25 26 27 28 29 30 31 32 33 34 |
# File 'lib/datasource/consumer_adapters/active_model_serializers.rb', line 25 def get_serializer_for(klass, serializer_assoc = nil) serializer = if serializer_assoc if serializer_assoc.kind_of?(Hash) serializer_assoc[:options].try(:[], :serializer) else serializer_assoc.[:serializer] end end serializer || "#{klass.name}Serializer".constantize end |
.to_datasource_select(result, klass, serializer = nil, serializer_assoc = nil, adapter = nil) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/datasource/consumer_adapters/active_model_serializers.rb', line 36 def to_datasource_select(result, klass, serializer = nil, serializer_assoc = nil, adapter = nil) adapter ||= Datasource::Base.default_adapter serializer ||= get_serializer_for(klass, serializer_assoc) result.unshift("*") if Datasource.config.simple_mode result.concat(serializer._attributes) result_assocs = {} result.push(result_assocs) serializer._associations.each_pair do |name, serializer_assoc| # TODO: what if assoc is renamed in serializer? reflection = adapter.association_reflection(klass, name.to_sym) assoc_class = reflection[:klass] name = name.to_s result_assocs[name] = [] to_datasource_select(result_assocs[name], assoc_class, nil, serializer_assoc, adapter) end rescue Exception => ex if ex.is_a?(SystemStackError) || ex.is_a?(Datasource::RecursionError) fail Datasource::RecursionError, "recursive association (involving #{klass.name})" else raise end end |