module Mobility::Plugins::ActiveRecord::Query::QueryExtension

Public Instance Methods

backend_node(name, locale = Mobility.locale) click to toggle source

Return backend node for attribute name. @param [Symbol,String] name Name of attribute @param [Symbol] locale Locale @return [Arel::Node] Arel node for this attribute in given locale

# File lib/mobility/plugins/active_record/query.rb, line 192
def backend_node(name, locale = Mobility.locale)
  @klass.mobility_backend_class(name)[name, locale]
end
order(opts, *rest) click to toggle source
Calls superclass method
# File lib/mobility/plugins/active_record/query.rb, line 139
def order(opts, *rest)
  return super unless @klass.respond_to?(:mobility_attribute?)

  case opts
  when Symbol, String
    @klass.mobility_attribute?(opts) ? order({ opts => :asc }, *rest) : super
  when ::Hash
    i18n_keys, keys = opts.keys.partition(&@klass.method(:mobility_attribute?))
    return super if i18n_keys.empty?

    base = keys.empty? ? self : super(opts.slice(keys))

    i18n_keys.inject(base) do |query, key|
      backend_class = @klass.mobility_backend_class(key)
      dir, node = opts[key], backend_node(key)
      backend_class.apply_scope(query, node).order(node.send(dir.downcase))
    end
  else
    super
  end
end
where(opts = :chain, *rest) click to toggle source
Calls superclass method
# File lib/mobility/plugins/active_record/query.rb, line 135
def where(opts = :chain, *rest)
  opts == :chain ? WhereChain.new(spawn) : super
end
where!(opts, *rest) click to toggle source
Calls superclass method
# File lib/mobility/plugins/active_record/query.rb, line 129
def where!(opts, *rest)
  QueryBuilder.build(self, opts) do |untranslated_opts|
    untranslated_opts ? super(untranslated_opts, *rest) : super
  end
end