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
- #filterable_by ⇒ Object
- #links ⇒ Object
- #side_loads(models, options) ⇒ Object
Instance Method Details
#associations ⇒ Object
56 57 58 59 60 61 62 63 |
# File 'lib/restpack_serializer/serializable/side_loading.rb', line 56 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
29 30 31 32 |
# File 'lib/restpack_serializer/serializable/side_loading.rb', line 29 def can_include(*includes) @can_includes ||= [] @can_includes += includes end |
#can_includes ⇒ Object
25 26 27 |
# File 'lib/restpack_serializer/serializable/side_loading.rb', line 25 def can_includes @can_includes || [] end |
#filterable_by ⇒ Object
19 20 21 22 23 |
# File 'lib/restpack_serializer/serializable/side_loading.rb', line 19 def filterable_by filters = [self.model_class.primary_key.to_sym] filters += self.model_class.reflect_on_all_associations(:belongs_to).map(&:foreign_key).map(&:to_sym) filters.uniq end |
#links ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/restpack_serializer/serializable/side_loading.rb', line 34 def links links = {} associations.each do |association| if association.macro == :belongs_to link_key = "#{self.key}.#{association.name}" href = "/#{association.plural_name}/{#{link_key}}.json" elsif association.macro == :has_many singular_key = self.key.to_s.singularize link_key = "#{self.key}.#{association.plural_name}" href = "/#{association.plural_name}.json?#{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? || .includes.nil? .includes.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 |