class Goaltender::Base
Attributes
inputs[RW]
params[R]
Public Class Methods
new(args)
click to toggle source
# File lib/goaltender/base.rb, line 16 def initialize(args) @params = HashWithIndifferentAccess.new(args) @inputs = set_inputs after_init(@params) end
Public Instance Methods
save()
click to toggle source
# File lib/goaltender/base.rb, line 31 def save before_save success = valid_form? ? persist! : false if success after_save true else false end end
to_h()
click to toggle source
# File lib/goaltender/base.rb, line 22 def to_h hash = {} inputs.each do |input| value = instance_variable_get("@#{input.variable_name}") hash[input.variable_name] = value end hash end
Private Instance Methods
after_init(args)
click to toggle source
METHODS FOR CHILDREN
# File lib/goaltender/base.rb, line 83 def after_init(args) # this method is optionally implemented by children to # override default initialization behavior end
after_save()
click to toggle source
# File lib/goaltender/base.rb, line 92 def after_save # optionally implemented by children end
before_save()
click to toggle source
# File lib/goaltender/base.rb, line 96 def before_save # optionally implemented by children end
object()
click to toggle source
# File lib/goaltender/base.rb, line 88 def object # optionally implemented by children end
persist!()
click to toggle source
# File lib/goaltender/base.rb, line 77 def persist! object.save end
set_inputs()
click to toggle source
# File lib/goaltender/base.rb, line 44 def set_inputs current_class_name = self.class.name relevant_classes = [current_class_name] classes = current_class_name.split("::") while classes.present? classes.pop possibility = classes.join("::") relevant_classes << possibility unless possibility.exclude?("::") current_class_name = possibility end all_inputs = [] Goaltender::Base.input_definitions.each do |class_name, form_inputs| if relevant_classes.include?(class_name) form_inputs.each do |form_input| name = form_input[0] type = form_input[1] options = form_input[2] input_value = params[name] input = Goaltender::Input.new(self, name, type, input_value, options) self.class.__send__(:attr_accessor, input.variable_name) instance_variable_set("@#{input.variable_name.to_s}", input.parsed_value) all_inputs << input end end end all_inputs end
valid_form?()
click to toggle source
# File lib/goaltender/base.rb, line 73 def valid_form? valid? && object.valid? end