Module: Uuids::Base::HasUuids::ClassMethods

Defined in:
lib/uuids/base/has_uuids.rb

Overview

Model scopes.

Instance Method Summary collapse

Instance Method Details

#by_uuid(*values) ⇒ Object

Selects distinct records by uuids (relation scope).

Params:

values

a list of string uuids values to select records by.

Returns the ActiveRecord::Relation object.

Examples:


class MyRecord < ActiveRecord::Base
  include Uuids::Base
  has_uuids
end

MyRecord.by_uuid(
  "23423fe3-28d8-a1e5-bde3-2e08074aa92d",
  "9223238d-a7e3-2d36-a93d-1e50fea02de2"
)
# => #<ActiveRecord::Relation ...>


31
32
33
34
35
# File 'lib/uuids/base/has_uuids.rb', line 31

def by_uuid(*values)
  first_value = values.first
  list = first_value.is_a?(Array) ? first_value : values
  joins(:uuids).where(uuids_uuids: { value: list }).uniq
end