class Nexter::Model

Attributes

associations[R]
model[R]
order_values[R]

Public Class Methods

new(model, relation) click to toggle source
# File lib/nexter/model.rb, line 6
def initialize(model, relation)
  @model = model
  @order_values = ParseOrder.parse(relation.order_values)
end

Public Instance Methods

values() click to toggle source
# File lib/nexter/model.rb, line 11
def values
  @values ||= @order_values.map do |column|
    next unless value = value_of(column[0])
    { col: column[0],
      val: value,
      dir: column[1]
    }
  end.compact
end

Private Instance Methods

value_of(cursor) click to toggle source
# File lib/nexter/model.rb, line 22
def value_of(cursor)
  splits = cursor.split(".")
  result = if splits.first == model.class.table_name || splits.size == 1
    model.send(splits.last) if model.respond_to?(splits.last)
  elsif asso = model.class.reflections.keys.grep(/#{splits.first.singularize}/).first
    asso = model.send(asso) and asso.send(splits.last)
  else
    false
  end
end