Module: ContentfulRails::NestedResource
- Defined in:
- lib/contentful_rails/nested_resource.rb
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
Instance Method Summary collapse
-
#get_child_entity_from_path_by(field, children) ⇒ Object
Given a field and an array of child fields, we need to recurse through them to get the last one.
-
#nested_path_by(field, opts = {}) ⇒ String
Given a field (and optional delimiter), return a path to the current object.
Class Method Details
.included(base) ⇒ Object
4 5 6 |
# File 'lib/contentful_rails/nested_resource.rb', line 4 def self.included(base) base.extend ClassMethods end |
Instance Method Details
#get_child_entity_from_path_by(field, children) ⇒ Object
Given a field and an array of child fields, we need to recurse through them to get the last one
50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/contentful_rails/nested_resource.rb', line 50 def get_child_entity_from_path_by(field, children) # the next child in the path child_value = children.shift # get the child entity child = self.send(:children).find {|child| child.send(field) == child_value} if child && children.size > 0 # we have some recursion to do - we're not at the end of the array # so call this method again with a smaller set of children child.get_child_entity_from_path_by(field, children) else return child #this is the final thing in the array - return it end end |
#nested_path_by(field, opts = {}) ⇒ String
Given a field (and optional delimiter), return a path to the current object. e.g. you’d end up with /path/to/page (where this object is ‘page’)
69 70 71 72 73 74 75 76 |
# File 'lib/contentful_rails/nested_resource.rb', line 69 def nested_path_by(field, opts = {}) = {delimiter: "/", prefix: ""} .merge!(opts) delimiter = [:delimiter] prefix = [:prefix].empty? ? "" : "#{[:prefix]}#{delimiter}" path = ([self] + ancestors).reverse.collect {|a| a.send(field)}.join(delimiter).gsub(prefix,"") return delimiter + path end |