class Mimi::DB::Model
Public Class Methods
before_validation(method = nil, &block)
click to toggle source
Defines a hook the ActiveRecord way
Example:
class A < Mimi::DB::Model before_validation :set_detaults def set_defaults self.name = "John Doe" end end
# File lib/mimi/db/model.rb, line 38 def self.before_validation(method = nil, &block) if method && block raise ArgumentError, '.before_validation() cannot accept both method and a block' end block = -> { send(method) } if method register_hook(:before_validation, block) end
Private Class Methods
register_hook(name, block)
click to toggle source
# File lib/mimi/db/model.rb, line 53 def self.register_hook(name, block) registered_hooks(name) << block end
registered_hooks(name)
click to toggle source
# File lib/mimi/db/model.rb, line 48 def self.registered_hooks(name) @registered_hooks ||= {} @registered_hooks[name] ||= [] end
Public Instance Methods
before_validation()
click to toggle source
Calls superclass method
# File lib/mimi/db/model.rb, line 21 def before_validation super call_hooks(:before_validation) end
default_validation_helpers_options(type)
click to toggle source
Keeps messages as error types, not human readable strings
# File lib/mimi/db/model.rb, line 17 def default_validation_helpers_options(type) { message: type } end
Private Instance Methods
call_hooks(name)
click to toggle source
# File lib/mimi/db/model.rb, line 57 def call_hooks(name) self.class.registered_hooks(name).each do |block| instance_eval(&block) end end