module Searchable

Public Instance Methods

all() click to toggle source
# File lib/laris/larisrecord/searchable.rb, line 2
def all
  Relation.new(self)
end
find(id) click to toggle source
# File lib/laris/larisrecord/searchable.rb, line 6
def find(id)
  all.where(id: id).limit(1).first
end
find_by(conditions) click to toggle source
# File lib/laris/larisrecord/searchable.rb, line 10
def find_by(conditions)
  all.where(conditions).limit(1).first
end
find_by_sql(sql, values = []) click to toggle source
# File lib/laris/larisrecord/searchable.rb, line 14
def find_by_sql(sql, values = [])
  results = DBConnection.execute(sql, values)
  parse_all(results)
end
first() click to toggle source
# File lib/laris/larisrecord/searchable.rb, line 19
def first
  all.order(:id).limit(1).first
end
last() click to toggle source
# File lib/laris/larisrecord/searchable.rb, line 23
def last
  all.order(:id, :DESC).limit(1).first
end
method_missing(method_name, *args) click to toggle source
# File lib/laris/larisrecord/searchable.rb, line 27
def method_missing(method_name, *args)
  if method_name.to_s.start_with?("find_by_")
    columns = method_name[8..-1].split('_and_')

    conditions = {}
    columns.size.times { |i| conditions[columns[i]] = args[i] }

    all.where(conditions).limit(1).first
  else
    all.send(method_name, *args)
  end
end
parse_all(results) click to toggle source
# File lib/laris/larisrecord/searchable.rb, line 40
def parse_all(results)
  results.map { |params| new(params) }
end