class Ordy::Orm::ActiveRecord::Orderable::Order

Constants

DELIMITER

Attributes

default[R]
model[R]

Public Class Methods

new(model) click to toggle source

@param [ActiveRecord::Model] model

# File lib/ordy/orm/active_record/orderable.rb, line 17
def initialize(model)
  @model = model
  @orderables = {}
end

Public Instance Methods

[](key) click to toggle source
# File lib/ordy/orm/active_record/orderable.rb, line 26
def [](key)
  @orderables.fetch(key)
end
associations(associations) click to toggle source

associations comment: :scripts

@param [Array] associations

# File lib/ordy/orm/active_record/orderable.rb, line 43
def associations(associations)
  associations.each do |assoc, opts|
    column, association = if opts.is_a?(Hash)
                            [opts.fetch(:column), opts.fetch(:as, assoc)]
                          else
                            [opts, assoc]
                          end
    table_name = model.reflections.symbolize_keys.fetch(assoc).class_name.constantize.table_name

    @orderables[association] = { args: { association: association,
                                         table: table_name,
                                         column: column },
                                 orderable: Orderable::ByAssociation }
  end
end
columns(*column_names) click to toggle source

columns :name, :email

@param [Array] column_names

# File lib/ordy/orm/active_record/orderable.rb, line 33
def columns(*column_names)
  column_names.each do |column|
    @orderables[column] = { args: { table: model.table_name, column: column },
                            orderable: Orderable::ByColumn }
  end
end
each(&block) click to toggle source
# File lib/ordy/orm/active_record/orderable.rb, line 22
def each(&block)
  @orderables.each(&block)
end
query(query, &block) click to toggle source

query :users do |scope, args|

scope.where(...).order(field: args[:direction])

end

@param [Symbol] query @param [Proc] block

# File lib/ordy/orm/active_record/orderable.rb, line 79
def query(query, &block)
  @orderables[query] = { args: {}, orderable: block }
end
specified(args) click to toggle source

specified(state: %w(new pending_migration migrating failed))

@param [Array] args

# File lib/ordy/orm/active_record/orderable.rb, line 62
def specified(args)
  args.each do |column, values|
    specified_column = "specified_#{column}".to_sym

    @orderables[specified_column] = { args: { table: model.table_name,
                                              column: column,
                                              values: values },
                                      orderable: Orderable::BySpecified }
  end
end