Module: RestPack::Serializer::SideLoading::ClassMethods
- Defined in:
- lib/restpack_serializer/serializable/side_loading.rb
Instance Method Summary collapse
- #associations ⇒ Object
- #can_include(*includes) ⇒ Object
- #can_includes ⇒ Object
- #links ⇒ Object
- #side_loads(models, options) ⇒ Object
Instance Method Details
#associations ⇒ Object
50 51 52 53 54 55 56 57 |
# File 'lib/restpack_serializer/serializable/side_loading.rb', line 50 def associations associations = [] can_includes.each do |include| association = association_from_include(include) associations << association if supported_association?(association) end associations end |
#can_include(*includes) ⇒ Object
23 24 25 26 |
# File 'lib/restpack_serializer/serializable/side_loading.rb', line 23 def can_include(*includes) @can_includes ||= [] @can_includes += includes end |
#can_includes ⇒ Object
19 20 21 |
# File 'lib/restpack_serializer/serializable/side_loading.rb', line 19 def can_includes @can_includes || [] end |
#links ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/restpack_serializer/serializable/side_loading.rb', line 28 def links links = {} associations.each do |association| if association.macro == :belongs_to link_key = "#{self.key}.#{association.name}" href = "/#{association.plural_name}/{#{link_key}}" elsif association.macro == :has_many singular_key = self.key.to_s.singularize link_key = "#{self.key}.#{association.plural_name}" href = "/#{association.plural_name}?#{singular_key}_id={#{key}.id}" end links[link_key] = { :href => RestPack::Serializer.config.href_prefix + href, :type => association.plural_name.to_sym } end links end |
#side_loads(models, options) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/restpack_serializer/serializable/side_loading.rb', line 5 def side_loads(models, ) side_loads = { :meta => { } } return side_loads if models.empty? || .include.nil? .include.each do |include| side_load_data = side_load(include, models, ) side_loads[:meta].merge!(side_load_data[:meta] || {}) side_loads.merge! side_load_data.except(:meta) end side_loads end |