Sha256: ea5a77e684341d38d09640e5e4ef4aa3b07116209cf8af1ef369b6cbfa4ccc0e

Contents?: true

Size: 1.7 KB

Versions: 1

Compression:

Stored size: 1.7 KB

Contents

class Sortable < ActiveRecord::Base
  serialize :query

   :init_query

  def base_query
    safe_query[:base_query]
  end

  def columns_queries
    safe_query[:columns_queries]
  end

  def filters
    safe_query[:filters]
  end

  def token
    safe_query[:token]
  end

  def options
    safe_query[:options]
  end

  def external_filters
    safe_query[:external_filters]
  end

  def base_query=(val)
    safe_query[:token]<<"_#{val}".hash.to_s(32)
    safe_query[:base_query] = val
  end

  def columns_queries=(val)
    safe_query[:columns_queries]=val
  end

  def filters=(val)
    safe_query[:filters]=val
  end

  def token=(val)
    safe_query[:token]=val
  end

  def options=(val)
    safe_query[:options]=val
  end

  def external_filters=(val)
    safe_query[:external_filters]=val
  end

  def add_option opt_key, opt_value
    safe_query[:token]<<"_#{opt_key} #{opt_value}".hash.to_s(32)
    safe_query[:options][opt_key] = opt_value
  end

  def add_filter new_filter
    safe_query[:token]<<"_#{new_filter[:column_name]}".hash.to_s(32)
    safe_query[:filters]<<(new_filter)
  end

  def add_column sort_field, display_method, path_method = nil
    logger.debug "ADDING COLUMN: #{sort_field}"
    display_method = sort_field if display_method.blank?
    safe_query[:columns_queries]<<{:sort_field=>sort_field,:display_method=>display_method,:path_method=>path_method}
    safe_query[:token]<<"_#{sort_field}".hash.to_s(32)
    return  safe_query[:columns_queries].size() - 1
  end

  def safe_query
    self.query = {:base_query=>'',:columns_queries=>[],:filters=>[],:token=>'',:options=>{}} if self.query.nil?
    self.query
  end

  private
  def init_query
    #query = {:base_query=>'',:columns_queries=>[]}
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sortable_skima-0.2.0.25 app/models/sortable.rb