Module: LargeTextField::Owner::ClassMethods
- Defined in:
- lib/large_text_field/owner.rb
Instance Method Summary collapse
- #formatted_integer_value(value) ⇒ Object
- #initialize_large_text_field ⇒ Object
- #large_text_field(field_name, maximum: nil, singularize_errors: false) ⇒ Object
- #large_text_field_class_name_override(value) ⇒ Object
- #large_text_field_deprecated_class_name_override(value) ⇒ Object
Instance Method Details
#formatted_integer_value(value) ⇒ Object
176 177 178 |
# File 'lib/large_text_field/owner.rb', line 176 def formatted_integer_value(value) value.to_i.to_s.gsub(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1,") end |
#initialize_large_text_field ⇒ Object
130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 |
# File 'lib/large_text_field/owner.rb', line 130 def initialize_large_text_field return if initialized # skip if already initialized has_many( :large_text_fields, class_name: large_text_field_class_name, as: :owner, autosave: true, dependent: :destroy, inverse_of: :owner ) if large_text_field_deprecated_class_name has_many( :deprecated_large_text_fields, class_name: large_text_field_deprecated_class_name, as: :owner, autosave: true, dependent: :destroy, inverse_of: :owner ) end self.initialized = true end |
#large_text_field(field_name, maximum: nil, singularize_errors: false) ⇒ Object
154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 |
# File 'lib/large_text_field/owner.rb', line 154 def large_text_field(field_name, maximum: nil, singularize_errors: false) initialize_large_text_field # ensure the association is initialized field_name = field_name.to_s # validate custom maximum if maximum if !maximum.is_a? Integer raise ArgumentError, "maximum must be a number" elsif maximum > MAX_LENGTH raise ArgumentError, "maximum can't be greater than #{formatted_integer_value(MAX_LENGTH)}" elsif maximum.negative? raise ArgumentError, "maximum can't be less than 0" end end [field_name] = { maximum:, singularize_errors: } define_method(field_name) { get_text_field(field_name) } define_method("#{field_name}=") { |value| set_text_field(field_name, value) } define_method("#{field_name}_changed?") { text_field_changed(field_name) } end |
#large_text_field_class_name_override(value) ⇒ Object
120 121 122 123 |
# File 'lib/large_text_field/owner.rb', line 120 def large_text_field_class_name_override(value) self.large_text_field_class_name = value self.large_text_field_class = Object.const_get(value) end |
#large_text_field_deprecated_class_name_override(value) ⇒ Object
125 126 127 128 |
# File 'lib/large_text_field/owner.rb', line 125 def large_text_field_deprecated_class_name_override(value) self.large_text_field_deprecated_class_name = value self.large_text_field_deprecated_class = Object.const_get(value) end |