Sha256: a3bc11e8f5c03c367a930abf865516c6e9c9f27280f600a4e0e70b4bf0e366ee
Contents?: true
Size: 1.21 KB
Versions: 3
Compression:
Stored size: 1.21 KB
Contents
# frozen_string_literal: true module Tramway::ApplicationForms::AssociationObjectHelpers def define_association_method(association, class_name) if class_name.is_a? Array define_polymorphic_association association else self.class.send(:define_method, "#{association}=") do |value| model.send "#{association}_id=", value model.send "#{association}=", class_name.find(value) end end end def define_polymorphic_association(association) self.class.send(:define_method, "#{association}=") do |value| if value.present? if association_class(value).nil? Tramway::Error.raise_error :tramway, :application_form, :initialize, :polymorphic_class_is_nil, association_name: association else model.send "#{association}=", association_class(value).find(value.split('_')[-1]) send "#{association}_type=", association_class(value).to_s end end end end private def association_class(value) association_class_object = value.split('_')[0..-2].join('_').camelize association_class_object = association_class_object.constantize if association_class_object.is_a? String association_class_object end end
Version data entries
3 entries across 3 versions & 1 rubygems