module HasUuid::ActiveRecord::FinderMethods

Public Instance Methods

find_one(id) click to toggle source
Calls superclass method
# File lib/has_uuid/active_record/finder_methods.rb, line 6
def find_one(id)
  if id.is_a?(::UUIDTools::UUID) || id.to_s =~ VALID_FORMAT
    id = ::UUIDTools::UUID.parse(id) if id.is_a?(String)
    return self.find_by_uuid!(id)
  end
  super
end
find_some(ids) click to toggle source
Calls superclass method
# File lib/has_uuid/active_record/finder_methods.rb, line 14
def find_some(ids)
  if ids.length > 0 && ids.inject(true) { |r, id| r && (id.is_a?(::UUIDTools::UUID) || id.to_s =~ VALID_FORMAT) }
    uuids = ids.map do |id|
      id = ::UUIDTools::UUID.parse(id) if id.is_a?(String)
      id
    end

    arr = where(table[:uuid].in(uuids))
    if ::ActiveRecord::VERSION::MAJOR >= 4
      result = arr.load
    else
      result = arr.all
    end

    expected_size =
      if @limit_value && ids.size > @limit_value
        @limit_value
      else
        ids.size
      end

      if @offset_value && (ids.size - @offset_value < expected_size)
        expected_size = ids.size - @offset_value
      end

      if result.size == expected_size
        result
      else
        conditions = arel.where_sql
        conditions = " [#{conditions}]" if conditions
        error = "Couldn't find all #{@klass.name.pluralize} with UUIDs "
        error << "(#{ids.join(", ")})#{conditions} (found #{result.size} results, but was looking for #{expected_size})"
        raise ::ActiveRecord::RecordNotFound, error
      end
  else
    super
  end
end