Module: ActiveScaffold::OrmChecks

Included in:
Config::Core, DataStructures::Column, DataStructures::Sorting
Defined in:
lib/active_scaffold/orm_checks.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.active_record?(klass) ⇒ Boolean

Returns:

  • (Boolean)


6
7
8
9
10
# File 'lib/active_scaffold/orm_checks.rb', line 6

def active_record?(klass)
  return false unless defined? ActiveRecord

  klass < ActiveRecord::Base
end

.cast(klass, column_name, value) ⇒ Object



98
99
100
101
102
103
104
# File 'lib/active_scaffold/orm_checks.rb', line 98

def cast(klass, column_name, value)
  if active_record? klass
    type_for_attribute(klass, column_name).cast value
  elsif mongoid? klass
    type_for_attribute(klass, column_name)&.evolve value
  end
end

.column_type(klass, column_name) ⇒ Object



82
83
84
85
86
87
88
# File 'lib/active_scaffold/orm_checks.rb', line 82

def column_type(klass, column_name)
  if active_record? klass
    type_for_attribute(klass, column_name).type
  elsif mongoid? klass
    type_for_attribute(klass, column_name)
  end
end

.columns(klass) ⇒ Object



34
35
36
37
38
39
40
41
42
# File 'lib/active_scaffold/orm_checks.rb', line 34

def columns(klass)
  if active_record? klass
    klass.columns
  elsif mongoid? klass
    klass.fields.values
  else
    []
  end
end

.columns_hash(klass) ⇒ Object



44
45
46
47
48
49
50
51
52
# File 'lib/active_scaffold/orm_checks.rb', line 44

def columns_hash(klass)
  if active_record? klass
    klass.columns_hash
  elsif mongoid? klass
    klass.fields
  else
    {}
  end
end

.content_columns(klass) ⇒ Object



64
65
66
67
68
69
70
71
72
# File 'lib/active_scaffold/orm_checks.rb', line 64

def content_columns(klass)
  if active_record? klass
    klass.content_columns
  elsif mongoid? klass
    klass.fields.except('_id').values
  else
    []
  end
end

.default_value(klass, column_name) ⇒ Object



90
91
92
93
94
95
96
# File 'lib/active_scaffold/orm_checks.rb', line 90

def default_value(klass, column_name)
  if ActiveScaffold::OrmChecks.mongoid? klass
    columns_hash(klass)[column_name.to_s]&.default_val
  elsif ActiveScaffold::OrmChecks.active_record? klass
    klass._default_attributes[column_name.to_s]&.value
  end
end

.mongoid?(klass) ⇒ Boolean

Returns:

  • (Boolean)


12
13
14
15
16
# File 'lib/active_scaffold/orm_checks.rb', line 12

def mongoid?(klass)
  return false unless defined? Mongoid

  klass < Mongoid::Document
end

.quoted_table_name(klass) ⇒ Object



30
31
32
# File 'lib/active_scaffold/orm_checks.rb', line 30

def quoted_table_name(klass)
  klass.quoted_table_name if active_record? klass
end

.reflect_on_all_associations(klass) ⇒ Object



54
55
56
57
58
59
60
61
62
# File 'lib/active_scaffold/orm_checks.rb', line 54

def reflect_on_all_associations(klass)
  if active_record? klass
    klass.reflect_on_all_associations
  elsif mongoid? klass
    klass.relations.values
  else
    []
  end
end

.table_name(klass) ⇒ Object



22
23
24
25
26
27
28
# File 'lib/active_scaffold/orm_checks.rb', line 22

def table_name(klass)
  if active_record? klass
    klass.table_name
  elsif mongoid? klass
    klass.collection.name
  end
end

.tableless?(klass) ⇒ Boolean

Returns:

  • (Boolean)


18
19
20
# File 'lib/active_scaffold/orm_checks.rb', line 18

def tableless?(klass)
  klass < ActiveScaffold::Tableless
end

.type_for_attribute(klass, column_name) ⇒ Object



74
75
76
77
78
79
80
# File 'lib/active_scaffold/orm_checks.rb', line 74

def type_for_attribute(klass, column_name)
  if active_record? klass
    klass.type_for_attribute column_name.to_s
  elsif mongoid? klass
    klass.fields[column_name.to_s]&.type
  end
end

Instance Method Details

#cast(column_name, value) ⇒ Object



125
126
127
# File 'lib/active_scaffold/orm_checks.rb', line 125

def cast(column_name, value)
  ActiveScaffold::OrmChecks.cast active_record_class, column_name, value
end