module ActiveForm::Form
UnpersistentModel
allows the ActiveForm::Form
object to delegate methods to this object with expected results
Public Class Methods
included(base)
click to toggle source
# File lib/activeform-rails/form.rb, line 2 def self.included(base) base.class_eval do extend ActiveModel::Naming include ActiveModel::Conversion include ActiveModel::Validations end base.extend ClassMethods end
new(attributes = {})
click to toggle source
# File lib/activeform-rails/form.rb, line 74 def initialize(attributes = {}) assign_from_hash(attributes) end
Public Instance Methods
fill_attributes(params)
click to toggle source
# File lib/activeform-rails/form.rb, line 78 def fill_attributes(params) assign_from_hash(params) end
main_model()
click to toggle source
# File lib/activeform-rails/form.rb, line 96 def main_model if self.class.main_model.kind_of?(Symbol) send(self.class.main_model) else self.class.main_model end end
new_record?()
click to toggle source
# File lib/activeform-rails/form.rb, line 104 def new_record? !persisted? end
save(&block)
click to toggle source
# File lib/activeform-rails/form.rb, line 82 def save(&block) ensure_persistable valid?.tap do call_action_or_block(:save, &block) end end
save!(&block)
click to toggle source
# File lib/activeform-rails/form.rb, line 89 def save!(&block) ensure_persistable ActiveRecord::Base.transaction do call_action_or_block(:save!, &block) end end
Private Instance Methods
assign_from_hash(hash)
click to toggle source
# File lib/activeform-rails/form.rb, line 123 def assign_from_hash(hash) hash.each { |key, value| send("#{key}=", value) } end
call_action_or_block(action, &block)
click to toggle source
# File lib/activeform-rails/form.rb, line 127 def call_action_or_block(action, &block) block_given? ? block.call(self) : each_models(&action) end
each_models() { |send(model_name)| ... }
click to toggle source
# File lib/activeform-rails/form.rb, line 117 def each_models self.class.models.each do |model_name| yield(send(model_name)) end end
ensure_persistable()
click to toggle source
# File lib/activeform-rails/form.rb, line 110 def ensure_persistable message = 'The Form object is not backed by models so cannot be saved' if self.class.models.empty? raise ActiveForm::CannotBePersisted.new(message) end end