Sha256: b98d7e408927487e84b0be85ae1387ad697f35b96cb50a6817ccb179c61b2f0c

Contents?: true

Size: 1.26 KB

Versions: 20

Compression:

Stored size: 1.26 KB

Contents

# frozen_string_literal: true

class Avo::Fields::BelongsToField::EditComponent < Avo::Fields::EditComponent
  def initialize(field: nil, resource: nil, index: 0, form: nil, displayed_in_modal: false)
    super field: field, resource: resource, index: index, form: form, displayed_in_modal: displayed_in_modal

    @polymorphic_record = nil
  end

  def disabled
    return true if @field.readonly
    return true if @field.target_resource.present? && @field.target_resource.model_class.name == params[:via_resource_class]
    return true if @field.id.to_s == params[:via_relation].to_s

    false
  end

  def is_polymorphic?
    @field.types.present?
  end

  def has_polymorphic_association?
    polymorphic_class.present? && polymorphic_id.present?
  end

  # Get the polymorphic class
  def polymorphic_class
    @resource.model["#{@field.foreign_key}_type"]
  end

  # Get the polymorphic id
  def polymorphic_id
    @resource.model["#{@field.foreign_key}_id"]
  end

  # Get the actual resource
  def polymorphic_record
    return unless has_polymorphic_association?

    return unless is_polymorphic?

    return @polymorphic_record if @polymorphic_record.present?

    @polymorphic_record = polymorphic_class.safe_constantize.find polymorphic_id

    @polymorphic_record
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
avo-1.25.2 app/components/avo/fields/belongs_to_field/edit_component.rb
avo-2.1.2.pre2 app/components/avo/fields/belongs_to_field/edit_component.rb
avo-2.1.2.pre1 app/components/avo/fields/belongs_to_field/edit_component.rb
avo-1.25.1 app/components/avo/fields/belongs_to_field/edit_component.rb
avo-2.1.1 app/components/avo/fields/belongs_to_field/edit_component.rb
avo-2.1.0 app/components/avo/fields/belongs_to_field/edit_component.rb
avo-2.0.0 app/components/avo/fields/belongs_to_field/edit_component.rb
avo-1.25.0 app/components/avo/fields/belongs_to_field/edit_component.rb
avo-1.24.2 app/components/avo/fields/belongs_to_field/edit_component.rb
avo-1.24.1 app/components/avo/fields/belongs_to_field/edit_component.rb
avo-1.24.0 app/components/avo/fields/belongs_to_field/edit_component.rb
avo-1.23.0 app/components/avo/fields/belongs_to_field/edit_component.rb
avo-1.22.4 app/components/avo/fields/belongs_to_field/edit_component.rb
avo-1.22.3 app/components/avo/fields/belongs_to_field/edit_component.rb
avo-1.22.2 app/components/avo/fields/belongs_to_field/edit_component.rb
avo-1.22.1 app/components/avo/fields/belongs_to_field/edit_component.rb
avo-1.22.1.pre.2 app/components/avo/fields/belongs_to_field/edit_component.rb
avo-1.22.1.pre.1 app/components/avo/fields/belongs_to_field/edit_component.rb
avo-1.22.0 app/components/avo/fields/belongs_to_field/edit_component.rb
avo-1.22.0.pre.1 app/components/avo/fields/belongs_to_field/edit_component.rb