Sha256: f61a96e1241f360d78eee20a0dc90c0a1e945dcb2137890f570acaead9d941dd

Contents?: true

Size: 1014 Bytes

Versions: 1

Compression:

Stored size: 1014 Bytes

Contents

# frozen_string_literal: true

module Fields
  class NestedFormField < Field
    after_create do
      build_nested_form.save!
    end

    serialize :validations, Validations::NestedFormField
    serialize :options, NonConfigurable

    def attached_nested_form?
      true
    end

    def interpret_to(model, overrides: {})
      check_model_validity!(model)

      accessibility = overrides.fetch(:accessibility, self.accessibility)
      return model if accessibility == :hidden

      nested_model = nested_form.to_virtual_model(overrides: {_global: {accessibility: accessibility}})

      model.nested_models[name] = nested_model

      model.embeds_one name, anonymous_class: nested_model, validate: true
      model.accepts_nested_attributes_for name, reject_if: :all_blank
      if accessibility == :readonly
        model.attr_readonly name
      end

      interpret_validations_to model, accessibility, overrides
      interpret_extra_to model, accessibility, overrides

      model
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
script_core-0.1.0 spec/dummy/app/models/fields/nested_form_field.rb