class Ransack::Nodes::Sort

Attributes

dir[R]
name[R]
ransacker_args[R]

Public Class Methods

extract(context, str) click to toggle source
# File lib/ransack/nodes/sort.rb, line 10
def extract(context, str)
  return unless str
  attr, direction = str.split(/\s+/, 2)
  self.new(context).build(name: attr, dir: direction)
end

Public Instance Methods

build(params) click to toggle source
# File lib/ransack/nodes/sort.rb, line 17
def build(params)
  params.with_indifferent_access.each do |key, value|
    if key.match(/^(name|dir|ransacker_args)$/)
      self.send("#{key}=", value)
    end
  end

  self
end
dir=(dir) click to toggle source
# File lib/ransack/nodes/sort.rb, line 38
def dir=(dir)
  dir = dir.downcase if dir
  @dir =
    if dir == 'asc'.freeze || dir == 'desc'.freeze
      dir
    else
      'asc'.freeze
    end
end
name=(name) click to toggle source
# File lib/ransack/nodes/sort.rb, line 33
def name=(name)
  @name = context.ransackable_alias(name) || name
  context.bind(self, @name)
end
ransacker_args=(ransack_args) click to toggle source
# File lib/ransack/nodes/sort.rb, line 48
def ransacker_args=(ransack_args)
  @ransacker_args = ransack_args
end
valid?() click to toggle source
# File lib/ransack/nodes/sort.rb, line 27
def valid?
  bound? && attr &&
  context.klassify(parent).ransortable_attributes(context.auth_object)
  .include?(attr_name)
end