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)


4
5
6
7
8
# File 'lib/active_scaffold/orm_checks.rb', line 4

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

  klass < ActiveRecord::Base
end

.cast(klass, column_name, value) ⇒ Object



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

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



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

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



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

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

.columns_hash(klass) ⇒ Object



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

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

.content_columns(klass) ⇒ Object



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

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



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

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)


10
11
12
13
14
# File 'lib/active_scaffold/orm_checks.rb', line 10

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

  klass < Mongoid::Document
end

.quoted_table_name(klass) ⇒ Object



28
29
30
# File 'lib/active_scaffold/orm_checks.rb', line 28

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

.reflect_on_all_associations(klass) ⇒ Object



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

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



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

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

.tableless?(klass) ⇒ Boolean

Returns:

  • (Boolean)


16
17
18
# File 'lib/active_scaffold/orm_checks.rb', line 16

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

.type_for_attribute(klass, column_name) ⇒ Object



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

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



123
124
125
# File 'lib/active_scaffold/orm_checks.rb', line 123

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