Module: ActiveScaffold::OrmChecks
- Included in:
- Config::Core, DataStructures::Column, DataStructures::Sorting
- Defined in:
- lib/active_scaffold/orm_checks.rb
Class Method Summary collapse
- .active_record?(klass) ⇒ Boolean
- .cast(klass, column_name, value) ⇒ Object
- .column_type(klass, column_name) ⇒ Object
- .columns(klass) ⇒ Object
- .columns_hash(klass) ⇒ Object
- .content_columns(klass) ⇒ Object
- .default_value(klass, column_name) ⇒ Object
- .mongoid?(klass) ⇒ Boolean
- .quoted_table_name(klass) ⇒ Object
- .reflect_on_all_associations(klass) ⇒ Object
- .table_name(klass) ⇒ Object
- .tableless?(klass) ⇒ Boolean
- .type_for_attribute(klass, column_name) ⇒ Object
Instance Method Summary collapse
Class Method Details
.active_record?(klass) ⇒ Boolean
4 5 6 7 |
# File 'lib/active_scaffold/orm_checks.rb', line 4 def active_record?(klass) return unless defined? ActiveRecord klass < ActiveRecord::Base end |
.cast(klass, column_name, value) ⇒ Object
94 95 96 97 98 99 100 |
# File 'lib/active_scaffold/orm_checks.rb', line 94 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
78 79 80 81 82 83 84 |
# File 'lib/active_scaffold/orm_checks.rb', line 78 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
30 31 32 33 34 35 36 37 38 |
# File 'lib/active_scaffold/orm_checks.rb', line 30 def columns(klass) if active_record? klass klass.columns elsif mongoid? klass klass.fields.values else [] end end |
.columns_hash(klass) ⇒ Object
40 41 42 43 44 45 46 47 48 |
# File 'lib/active_scaffold/orm_checks.rb', line 40 def columns_hash(klass) if active_record? klass klass.columns_hash elsif mongoid? klass klass.fields else {} end end |
.content_columns(klass) ⇒ Object
60 61 62 63 64 65 66 67 68 |
# File 'lib/active_scaffold/orm_checks.rb', line 60 def content_columns(klass) if active_record? klass klass.content_columns elsif mongoid? klass klass.fields.reject { |field, _| field == '_id' }.values else [] end end |
.default_value(klass, column_name) ⇒ Object
86 87 88 89 90 91 92 |
# File 'lib/active_scaffold/orm_checks.rb', line 86 def default_value(klass, column_name) if ActiveScaffold::OrmChecks.mongoid? klass columns_hash(klass)[column_name]&.default_val elsif ActiveScaffold::OrmChecks.active_record? klass klass._default_attributes[column_name]&.value end end |
.mongoid?(klass) ⇒ Boolean
9 10 11 12 |
# File 'lib/active_scaffold/orm_checks.rb', line 9 def mongoid?(klass) return unless defined? Mongoid klass < Mongoid::Document end |
.quoted_table_name(klass) ⇒ Object
26 27 28 |
# File 'lib/active_scaffold/orm_checks.rb', line 26 def quoted_table_name(klass) klass.quoted_table_name if active_record? klass end |
.reflect_on_all_associations(klass) ⇒ Object
50 51 52 53 54 55 56 57 58 |
# File 'lib/active_scaffold/orm_checks.rb', line 50 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
18 19 20 21 22 23 24 |
# File 'lib/active_scaffold/orm_checks.rb', line 18 def table_name(klass) if active_record? klass klass.table_name elsif mongoid? klass klass.collection.name end end |
.tableless?(klass) ⇒ Boolean
14 15 16 |
# File 'lib/active_scaffold/orm_checks.rb', line 14 def tableless?(klass) klass < ActiveScaffold::Tableless end |
.type_for_attribute(klass, column_name) ⇒ Object
70 71 72 73 74 75 76 |
# File 'lib/active_scaffold/orm_checks.rb', line 70 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
121 122 123 |
# File 'lib/active_scaffold/orm_checks.rb', line 121 def cast(column_name, value) ActiveScaffold::OrmChecks.cast active_record_class, column_name, value end |