module QuickApi::Mongoid
Public Instance Methods
to_api(options = {relations: true}, result = {})
click to toggle source
# File lib/quick_api/mongoid.rb, line 57 def to_api(options = {relations: true}, result = {}) if options[:fields] api_fields = options[:fields] else api_fields = self.q_api_attributes.nil? ? [] : self.q_api_attributes end api_fields.each do |api_field| begin if (self.send(api_field)).class == Paperclip::Attachment picture_styles = [] self.send(api_field).styles.each {|style| picture_styles << style[0]} result[api_field] = {original: "http://#{ActionMailer::Base.default_url_options[:host]}#{self.send(api_field).url}", styles: picture_styles} else begin result[api_field] = self.send(api_field) rescue raise "The field #{api_field} don't exist in this Model" end end rescue begin result[api_field] = self.send(api_field) rescue raise "The field #{api_field} don't exist in this Model" end end end # if self.quick_api_methods # result = api_method_options(result, self.quick_api_methods) # end if options[:relations] == true result = api_many_options(result, self.q_api_has_many) if self.q_api_has_many result = api_belongs_or_one_options(result, self.q_api_belongs_to) if self.q_api_belongs_to result = api_belongs_or_one_options(result, self.q_api_has_one) if self.q_api_has_one result = api_many_options(result, self.q_api_has_and_belongs_to_many) if self.q_api_has_and_belongs_to_many result = api_many_options(result, self.q_api_embeds_many) if self.q_api_embeds_many result = api_belongs_or_one_options(result, self.q_api_embedded_in) if self.q_api_embedded_in result = api_belongs_or_one_options(result, self.q_api_embeds_one) if self.q_api_embeds_one end result = api_set_options(result, options) return result end
Private Instance Methods
api_added(result, added)
click to toggle source
# File lib/quick_api/mongoid.rb, line 140 def api_added(result, added) added.each do |field| field.each do |sub_field| result[sub_field[0]] = sub_field[1] unless sub_field.empty? end end return result end
api_belongs_or_one_options(result, one)
click to toggle source
# File lib/quick_api/mongoid.rb, line 132 def api_belongs_or_one_options(result, one) one.each do |model| resource = eval(model.to_s.singularize.camelize.underscore) result[model.to_s.singularize.camelize.underscore] = resource.try(:to_api) end return result end
api_many_options(result, many)
click to toggle source
# File lib/quick_api/mongoid.rb, line 120 def api_many_options(result, many) many.each do |model| resources = eval(model.to_s.underscore.pluralize) result_api_resources = [] resources.each do |resource| result_api_resources << resource.to_api end result[model.to_s.underscore.pluralize] = result_api_resources end return result end
api_set_options(result, options)
click to toggle source
def api_method_options(result, options)
options.each do |method| #TODO doc result.merge! self.send(method) end return result
end
# File lib/quick_api/mongoid.rb, line 115 def api_set_options(result, options) result = api_added(result, options[:added]) if options[:added] return result end