Sha256: 206ad05ef88391790bfd6049ecff9d1b285d00d07416629dd05a4612cbcb23c4

Contents?: true

Size: 751 Bytes

Versions: 3

Compression:

Stored size: 751 Bytes

Contents

module GreyscaleRecord
  module Queriable
    extend ActiveSupport::Concern

    included do
      class << self
        def find(id)
          records = where( id: id.to_s )
          raise Errors::RecordNotFound, "#{ self }: Record not found: #{ id }" if records.empty?
          records.first
        end

        def find_by( params = { } )
          results = where params
          raise Errors::RecordNotFound, "#{ self }: Could not find record that matches: #{ params.inspect }" if results.empty?
          results.first
        end

        def all
          where.all
        end

        def first
          all.first
        end

        def where( params = {} )
          Relation.new self, params 
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
greyscale_record-1.0.3 lib/greyscale_record/queriable.rb
greyscale_record-1.0.2 lib/greyscale_record/queriable.rb
greyscale_record-1.0.1 lib/greyscale_record/queriable.rb