module MongoidApiBase::BaseHelpers

Public Instance Methods

apply_scopes_to_chain!() click to toggle source
# File lib/mongoid-api-base/base_helpers.rb, line 26
def apply_scopes_to_chain!
  if respond_to?(:apply_scopes, true)
    @chain = apply_scopes(@chain)
  end
end
build_object() click to toggle source
# File lib/mongoid-api-base/base_helpers.rb, line 22
def build_object
  resource_class.new(resource_params)
end
find_object() click to toggle source
# File lib/mongoid-api-base/base_helpers.rb, line 7
def find_object
  resource_class.find(params[:id])
end
get_object_version(object) click to toggle source
# File lib/mongoid-api-base/base_helpers.rb, line 11
def get_object_version(object)
  version = params[:version]
  if object.respond_to?(:undo, true)
    if version && version.to_i != object.version
      object.undo(nil, from: version.to_i + 1, to: object.version)
      object.version = version
    end
  end
  object
end
json_config(action) click to toggle source
# File lib/mongoid-api-base/base_helpers.rb, line 102
def json_config(action)
  json_options = self.class.json_options
  if json_options && json_options.key?(action)
    json_options = json_options[action]
    json_options[:methods] ||= []
    json_options[:methods].concat(JSON_DEFAULT_ATTRIBUTES).uniq!
    json_options
  else
    json_default_options
  end
end
json_default_options() click to toggle source
# File lib/mongoid-api-base/base_helpers.rb, line 87
def json_default_options
  @json_default_options ||= begin
    default_options = {}
    json_options = self.class.json_options || {}
    [:only, :except, :methods].each do |name|
      if json_options.key? name
        default_options[name] = json_options[name]
      end
    end
    default_options[:methods] ||= []
    default_options[:methods].concat(JSON_DEFAULT_ATTRIBUTES).uniq!
    default_options
  end
end
page() click to toggle source
# File lib/mongoid-api-base/base_helpers.rb, line 40
def page
  @page ||= params[:page] || false
end
paginate_chain!() click to toggle source
# File lib/mongoid-api-base/base_helpers.rb, line 48
def paginate_chain!
  @chain = begin
    if page
      @chain.page(page).per(per_page)
    else
      @chain.all
    end
  end
end
per_page() click to toggle source
# File lib/mongoid-api-base/base_helpers.rb, line 44
def per_page
  @per_page ||= params[:perPage] || self.class.per_page || 20
end
permitted_params() click to toggle source
# File lib/mongoid-api-base/base_helpers.rb, line 83
def permitted_params
  params.require(resource_request_name).permit!
end
resource_class() click to toggle source
# File lib/mongoid-api-base/base_helpers.rb, line 66
def resource_class
  @resource_class ||= self.class.resource_class
  @resource_class ||= begin
    namespaced_class = self.class.to_s.split("::").last.
                            sub(/Controller$/, "").singularize
    namespaced_class.constantize
  end
end
resource_params() click to toggle source
# File lib/mongoid-api-base/base_helpers.rb, line 79
def resource_params
  permitted_params
end
resource_request_name() click to toggle source
# File lib/mongoid-api-base/base_helpers.rb, line 75
def resource_request_name
  resource_class.to_s.underscore.gsub("/", "_").gsub("::", "_")
end
search_filter_chain!() click to toggle source
# File lib/mongoid-api-base/base_helpers.rb, line 32
def search_filter_chain!
  query = params[:search]
  if query
    normalized_query = query.to_s.downcase
    @chain = @chain.search(normalized_query, match: :all)
  end
end
set_total_count_header!() click to toggle source
# File lib/mongoid-api-base/base_helpers.rb, line 58
def set_total_count_header!
  if page
    response.headers['X-Total-Count'] = @chain.total_count
  else
    response.headers['X-Total-Count'] = @chain.size
  end
end