Module: Traits::Utilities

Included in:
Traits
Defined in:
lib/traits/utilities.rb

Instance Method Summary collapse

Instance Method Details

#active_record_collection?(obj) ⇒ Boolean

Returns:

  • (Boolean)


41
42
43
# File 'lib/traits/utilities.rb', line 41

def active_record_collection?(obj)
  obj.kind_of?(ActiveRecord::Relation)
end

#active_record_descendant?(obj) ⇒ Boolean

Returns:

  • (Boolean)


37
38
39
# File 'lib/traits/utilities.rb', line 37

def active_record_descendant?(obj)
  obj.kind_of?(Class) && obj < ActiveRecord::Base
end

#active_record_instance?(obj) ⇒ Boolean

Returns:

  • (Boolean)


45
46
47
# File 'lib/traits/utilities.rb', line 45

def active_record_instance?(obj)
  obj.kind_of?(ActiveRecord::Base)
end

#retrieve_active_record(obj) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/traits/utilities.rb', line 6

def retrieve_active_record(obj)
  if active_record_descendant?(obj)
    obj

  elsif active_record_instance?(obj)
    obj.class

  elsif active_record_collection?(obj)
    obj.model

  else
    case obj
      when String, Symbol
        s = obj.kind_of?(Symbol) ? obj.to_s : obj
        s.camelize.safe_constantize || s.tr('_', '/').camelize.safe_constantize

      when Traits::Model, Traits::Attribute
        obj.active_record

      when Traits::Association
        obj.from_active_record
    end
  end
end

#retrieve_active_record!(obj) ⇒ Object



31
32
33
34
35
# File 'lib/traits/utilities.rb', line 31

def retrieve_active_record!(obj)
  retrieve_active_record(obj) || begin
    raise ActiveRecordRetrieveError, "#{obj.inspect} is not a valid ActiveRecord reference"
  end
end