class Golden::ActionFormOperator
Attributes
action[RW]
form[RW]
params[RW]
user[RW]
Public Class Methods
has_actions(actions, form: nil, presenter: nil)
click to toggle source
rubocop:disable Naming/PredicateName
# File lib/golden/objects/form/action_form_operator.rb, line 7 def has_actions(actions, form: nil, presenter: nil) define_method :actions do actions end define_method :form_class do return form.to_s.constantize if form.present? "#{action.capitalize}Form".constantize end define_method :presenter_class do return presenter.to_s.constantize if presenter.present? "#{action.capitalize}FormPresenter".constantize end end
new(params, accessors = {})
click to toggle source
# File lib/golden/objects/form/action_form_operator.rb, line 39 def initialize(params, accessors = {}) @params = params @action = params[:action]&.to_sym assign_attributes(accessors || {}) run_callbacks(:build_form) { @form ||= build_form } end
Public Instance Methods
form_presenter()
click to toggle source
# File lib/golden/objects/form/action_form_operator.rb, line 59 def form_presenter @form_presenter ||= presenter_class.new(form) end
perform()
click to toggle source
# File lib/golden/objects/form/action_form_operator.rb, line 52 def perform return if invalid? run_callbacks(:save_form) { save_form } errors.empty? end
valid?(context = nil)
click to toggle source
Calls superclass method
# File lib/golden/objects/form/action_form_operator.rb, line 46 def valid?(context = nil) super run_callbacks(:validate_form) { validate_form } errors.empty? end
Private Instance Methods
build_form()
click to toggle source
# File lib/golden/objects/form/action_form_operator.rb, line 65 def build_form return if action.blank? || actions.exclude?(action) form_params = send("#{action}_params") form_accessors = send("#{action}_accessors") if private_methods.include? :"#{action}_accessors" form_class.new form_params.permit(*form_class.permits), form_accessors end
save_form()
click to toggle source
# File lib/golden/objects/form/action_form_operator.rb, line 79 def save_form form.save errors.merge! form.errors end
validate_form()
click to toggle source
# File lib/golden/objects/form/action_form_operator.rb, line 73 def validate_form return unless form.present? && form.invalid? errors.merge! form.errors end