Top Level Namespace
Defined Under Namespace
Modules: Visibilize, VisibilizeGenerator Classes: AttributeNotFoundError
Instance Method Summary collapse
- #define_visibilize_method(column: :visible_id, type: :integer, unique: true, length: 8, lambda: nil) ⇒ Object
- #method_name(column) ⇒ Object
-
#visibilize(options = {}) ⇒ Object
Visibilize.
Instance Method Details
#define_visibilize_method(column: :visible_id, type: :integer, unique: true, length: 8, lambda: nil) ⇒ Object
33 34 35 36 37 38 39 40 |
# File 'lib/visibilize.rb', line 33 def define_visibilize_method(column: :visible_id, type: :integer, unique: true, length: 8, lambda: nil) define_method(method_name(column)) do raise AttributeNotFoundError.new(column, self.class) unless has_attribute?(column) value = lambda&.call || VisibilizeGenerator.value(type, self.class, column, length, unique) write_attribute(column, value) end end |
#method_name(column) ⇒ Object
42 43 44 |
# File 'lib/visibilize.rb', line 42 def method_name(column) "visibilize_#{column}".to_sym end |
#visibilize(options = {}) ⇒ Object
Visibilize
22 23 24 25 26 27 28 29 30 31 |
# File 'lib/visibilize.rb', line 22 def visibilize( = {}) .reverse_merge!(column: :visible_id, callback: :before_create, type: :integer, unique: true, length: 8) # Define a method to fill the column with an appropiate value define_visibilize_method(**.slice(:column, :type, :unique, :length, :lambda)) # Create a callback to execute method callback_type, _, callback_timing = [:callback].to_s.partition('_') set_callback callback_timing.to_sym, callback_type.to_sym, method_name([:column]) end |