class FormLogic::Base
Attributes
instances[R]
Public Class Methods
declare_model_name(name)
click to toggle source
@param [Sting, Symbol] @example
declare_model_name :user
This name will be use to build an [ActiveModel::Name]
# File lib/form_logic/base.rb, line 16 def declare_model_name(name) @@declared_model_name = name.to_s end
model_name()
click to toggle source
# File lib/form_logic/base.rb, line 41 def model_name ActiveModel::Name.new(self, nil, declared_model_name || self.name) end
new(*instances)
click to toggle source
@example UserForm.new(User.new(params))
# File lib/form_logic/base.rb, line 48 def initialize(*instances) @instances = instances instances.each do |instance| self.class.send(:define_method, instance_to_accessor_name(instance)) { instance } end end
property(*names, to: nil)
click to toggle source
@param [String, Symbol] name of an attribute @option to [Symbol] object-receiver (the name of an instance) @example
property :email, :to => :user
Actually this is just an syntax sugar over the `delegate` method
# File lib/form_logic/base.rb, line 27 def property(*names, to: nil) receiver = to || (raise ArgumentError.new ':to option must be set') names.each do |name| class_eval { delegate(name, to: receiver) } end end
virtual(*names)
click to toggle source
@param [Symbol]
# File lib/form_logic/base.rb, line 35 def virtual(*names) names.each do |name| class_eval { attr_accessor(name) } end end
Public Instance Methods
valid?()
click to toggle source
Copies vaidation errors of declared models to self
Calls superclass method
# File lib/form_logic/base.rb, line 57 def valid? super copy_errors_to_self! if self.class.method_defined?(:while_validation) while_validation() end !errors.present? end
Protected Instance Methods
copy_errors_to_self!()
click to toggle source
copies errors from passed instancies to self
# File lib/form_logic/base.rb, line 69 def copy_errors_to_self! instances.each do |instance| instance.valid? instance.errors.each do |attribute, description| self.errors.add(attribute, description) end end end
Private Instance Methods
instance_to_accessor_name(instance)
click to toggle source
# File lib/form_logic/base.rb, line 80 def instance_to_accessor_name(instance) instance.class.name.split('::').join('_').underscore end