Class: SimpleMaster::Master::Column
- Inherits:
-
Object
- Object
- SimpleMaster::Master::Column
- Defined in:
- lib/simple_master/master/column.rb,
lib/simple_master/master/column/id_column.rb,
lib/simple_master/master/column/enum_column.rb,
lib/simple_master/master/column/json_column.rb,
lib/simple_master/master/column/time_column.rb,
lib/simple_master/master/column/float_column.rb,
lib/simple_master/master/column/string_column.rb,
lib/simple_master/master/column/symbol_column.rb,
lib/simple_master/master/column/bitmask_column.rb,
lib/simple_master/master/column/boolean_column.rb,
lib/simple_master/master/column/integer_column.rb,
lib/simple_master/master/column/sti_type_column.rb,
lib/simple_master/master/column/polymorphic_type_column.rb
Direct Known Subclasses
BitmaskColumn, BooleanColumn, EnumColumn, FloatColumn, IdColumn, IntegerColumn, JsonColumn, PolymorphicTypeColumn, StiTypeColumn, StringColumn, SymbolColumn, TimeColumn
Defined Under Namespace
Classes: BitmaskColumn, BooleanColumn, EnumColumn, FloatColumn, IdColumn, IntegerColumn, JsonColumn, PolymorphicTypeColumn, StiTypeColumn, StringColumn, SymbolColumn, TimeColumn
Instance Attribute Summary collapse
-
#group_key ⇒ Object
Returns the value of attribute group_key.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#options ⇒ Object
readonly
Returns the value of attribute options.
Class Method Summary collapse
- .column_type ⇒ Object
- .column_types ⇒ Object
- .inherited(subclass) ⇒ Object
- .register(type, klass) ⇒ Object
Instance Method Summary collapse
- #db_column_name ⇒ Object
- #init(master_class, for_test = false) ⇒ Object
-
#initialize(name, options) ⇒ Column
constructor
A new instance of Column.
Constructor Details
#initialize(name, options) ⇒ Column
Returns a new instance of Column.
37 38 39 40 41 |
# File 'lib/simple_master/master/column.rb', line 37 def initialize(name, ) @name = name @group_key = !![:group_key] = end |
Instance Attribute Details
#group_key ⇒ Object
Returns the value of attribute group_key.
8 9 10 |
# File 'lib/simple_master/master/column.rb', line 8 def group_key @group_key end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
6 7 8 |
# File 'lib/simple_master/master/column.rb', line 6 def name @name end |
#options ⇒ Object (readonly)
Returns the value of attribute options.
7 8 9 |
# File 'lib/simple_master/master/column.rb', line 7 def end |
Class Method Details
.column_type ⇒ Object
10 11 12 13 14 15 16 |
# File 'lib/simple_master/master/column.rb', line 10 def self.column_type klass_name = name.split("::").last type_name = klass_name.delete_suffix('Column') return :column if type_name.empty? type_name.underscore.to_sym end |
.column_types ⇒ Object
23 24 25 |
# File 'lib/simple_master/master/column.rb', line 23 def self.column_types @column_types ||= {} end |
.inherited(subclass) ⇒ Object
18 19 20 21 |
# File 'lib/simple_master/master/column.rb', line 18 def self.inherited(subclass) type = subclass.column_type Column.register(type, subclass) end |
.register(type, klass) ⇒ Object
27 28 29 30 31 32 33 |
# File 'lib/simple_master/master/column.rb', line 27 def self.register(type, klass) if column_types.key?(type) fail "#{klass}: Column type #{type} is defined at #{column_types[type]}." end column_types[type] = klass end |
Instance Method Details
#db_column_name ⇒ Object
73 74 75 |
# File 'lib/simple_master/master/column.rb', line 73 def db_column_name [:db_column_name] || name end |
#init(master_class, for_test = false) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/simple_master/master/column.rb', line 43 def init(master_class, for_test = false) master_class.simple_master_module.attr_reader name master_class.simple_master_module.class_eval " def \#{name}=(value)\n \#{code_for_conversion}\n \#{code_for_dirty_check if for_test}\n @\#{name} = value\n end\n\n def \#{name}_value_for_sql\n value = \#{code_for_sql_value}\n return \"NULL\" if value.nil?\n return \"'\" + value.gsub(/'/, \"''\").gsub(\"\\\\\\\\\", '\\\\&\\\\&') + \"'\" if value.is_a?(String)\n value\n end\n\n # For inspecting raw DB/CSV values when checking CSV diffs\n def \#{name}_value_for_csv\n \#{code_for_sql_value}\n end\n RUBY\n\n globalize(master_class) if options[:globalize]\n\n if options[:db_column_name]\n master_class.simple_master_module.alias_method :\"\#{options[:db_column_name]}=\", :\"\#{name}=\"\n end\nend\n", __FILE__, __LINE__ + 1 |