Sha256: 8a05b7a66979b9fbbda36c55a3c44ccf548e099d7439ae3ca8d79b65100b9c5e

Contents?: true

Size: 931 Bytes

Versions: 3

Compression:

Stored size: 931 Bytes

Contents

# frozen_string_literal: true

module Tramway::ExtendableFormsHelpers::MorePropertiesHelper
  def define_property_method(property_name)
    define_method property_name do
      model.values[property_name] if model.values
    end
  end

  def define_assignment_method(property)
    define_method "#{property[0]}=" do |value|
      if property[1][:validates].present?
        property[1][:validates].each do |pair|
          make_validates property[0], pair, value
        end
      else
        model.values.merge property[0] => value
      end
    end
  end

  def define_file_property_assignment_method(property, field)
    define_method "#{property[0]}=" do |value|
      file_instance = property[1][:association_model].find_or_create_by(
        "#{model.class.name.underscore}_id" => model.id, "#{field.class.name.underscore}_id" => field.id
      )
      file_instance.file = value
      file_instance.save!
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
tramway-0.1.2 app/forms/tramway/extendable_forms_helpers/more_properties_helper.rb
tramway-0.1.1.1 app/forms/tramway/extendable_forms_helpers/more_properties_helper.rb
tramway-0.1.1 app/forms/tramway/extendable_forms_helpers/more_properties_helper.rb