Sha256: 7e38efa0551e8b9b5ac09a40487414da06d336154609a271a20e382e52c7ece7

Contents?: true

Size: 970 Bytes

Versions: 37

Compression:

Stored size: 970 Bytes

Contents

module Edgarj
  # Search condition for popup
  class SearchPopup < Edgarj::Search
    attr_accessor :klass_str, :col, :val

    validates_format_of :col, with: /\A[a-zA-Z_0-9\.]+\z/, allow_nil: true
    validate :validate_integer

    def initialize(klass, hash = nil)
      super(klass)
      @col  = hash ? hash[:col] : nil
      @val  = hash ? hash[:val] : nil
    end

    # implement to generate search-conditions
    def conditions
      return ['1=0'] if !valid?

      if @val.blank?
        []
      else
        # FIXME: assume type is just string
        op  = '=?'
        val = @val
        if val =~ /\*$/
          op  = ' like ?'
          val = @val.gsub(/\*/, '%')
        end
        ["#{@col}#{op}", val]
      end
    end

  private
    def validate_integer
      case column_type(col)
      when :integer
        if val.present? && val !~ /^[\d\.\-]+$/
          errors.add(:val, :not_an_integer)
        end
      else
      end
    end
  end
end

Version data entries

37 entries across 37 versions & 1 rubygems

Version Path
edgarj-4.06.10 app/models/edgarj/search_popup.rb
edgarj-4.06.09 app/models/edgarj/search_popup.rb
edgarj-4.06.07 app/models/edgarj/search_popup.rb
edgarj-4.06.05 app/models/edgarj/search_popup.rb
edgarj-4.06.04 app/models/edgarj/search_popup.rb
edgarj-4.06.03 app/models/edgarj/search_popup.rb
edgarj-4.06.02 app/models/edgarj/search_popup.rb
edgarj-4.06.01 app/models/edgarj/search_popup.rb
edgarj-4.06.00 app/models/edgarj/search_popup.rb
edgarj-4.05.04 app/models/edgarj/search_popup.rb
edgarj-4.05.03 app/models/edgarj/search_popup.rb
edgarj-4.05.02 app/models/edgarj/search_popup.rb
edgarj-4.05.01 app/models/edgarj/search_popup.rb
edgarj-4.05.00 app/models/edgarj/search_popup.rb
edgarj-4.04.01 app/models/edgarj/search_popup.rb
edgarj-4.04.00 app/models/edgarj/search_popup.rb
edgarj-4.03.00 app/models/edgarj/search_popup.rb
edgarj-4.02.00 app/models/edgarj/search_popup.rb
edgarj-4.01.01 app/models/edgarj/search_popup.rb
edgarj-4.01.00 app/models/edgarj/search_popup.rb