Sha256: 7641840eadad8ee25f0b63a583fba9b052de574e6e036dcc4c054e787a6a01f6
Contents?: true
Size: 1.24 KB
Versions: 1
Compression:
Stored size: 1.24 KB
Contents
# frozen_string_literal: true require "active_model" require "action_controller" module HyperActiveForm class Base include ActiveModel::Model include ActiveModel::Attributes include ActiveModel::Validations def self.proxy_for(klass, object) delegate :new_record?, :persisted?, :id, to: object singleton_class.delegate :model_name, to: klass end def initialize(*, **) super() setup(*, **) end def setup; end def perform raise NotImplementedError end def assign_form_attributes(params) params = ActionController::Parameters.new(params) unless params.is_a?(ActionController::Parameters) attribute_names.each do |attribute| public_send(:"#{attribute}=", params&.dig(attribute)) if params&.key?(attribute) end end def submit(params) assign_form_attributes(params) !!(valid? && perform) rescue HyperActiveForm::CancelFormSubmit false end def submit!(params) submit(params) || raise(HyperActiveForm::FormDidNotSubmitError) end def add_errors_from(model) model.errors.each do |error| Array.wrap(error.message).each { |e| errors.add(error.attribute, e) } end false end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
hyperactiveform-0.1.0 | lib/hyper_active_form/base.rb |