Sha256: 3f5508a67079f5723a68bcd6b06f00abea9f74b49d815656666707a79165c7cf

Contents?: true

Size: 1.36 KB

Versions: 19

Compression:

Stored size: 1.36 KB

Contents

# frozen_string_literal: true

class Avo::Fields::HasOneField::ShowComponent < Avo::Fields::ShowComponent
  include Avo::ApplicationHelper

  def can_attach?
    policy_result = true

    if @field.present?
      reflection_resource = @field.target_resource
      if reflection_resource.present? && @resource.present?
        method_name = "attach_#{@field.id}?".to_sym

        if @resource.authorization.has_method?(method_name, raise_exception: false)
          policy_result = @resource.authorization.authorize_action(method_name, raise_exception: false)
        end
      end
    end

    policy_result
  end

  def attach_path
    helpers.avo.resources_associations_new_path(@resource.singular_model_key, @resource.model.id, @field.id)
  end

  def can_see_the_create_button?
    create = "create_#{@field.id.to_s}?"

    authorization_service = @resource.authorization

    # By default return true if the create method is not defined for this field
    return true unless authorization_service.has_method?(create, raise_exception: false)

    authorization_service.authorize_action(create, raise_exception: false)
  end

  def create_path
    args = {
      via_relation: @resource.singular_model_key,
      via_relation_class: @resource.model_class.to_s,
      via_resource_id: @resource.model.id
    }
    helpers.new_resource_path(resource: @field.target_resource, **args)
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
avo-2.26.1.pr1584.pre.1 app/components/avo/fields/has_one_field/show_component.rb
avo-2.26.0 app/components/avo/fields/has_one_field/show_component.rb
avo-2.25.0 app/components/avo/fields/has_one_field/show_component.rb
avo-2.24.1 app/components/avo/fields/has_one_field/show_component.rb
avo-2.24.0 app/components/avo/fields/has_one_field/show_component.rb
avo-2.23.3.pre.1.pr1529 app/components/avo/fields/has_one_field/show_component.rb
avo-2.23.2 app/components/avo/fields/has_one_field/show_component.rb
avo-2.23.1 app/components/avo/fields/has_one_field/show_component.rb
avo-2.23.0 app/components/avo/fields/has_one_field/show_component.rb
avo-2.22.0 app/components/avo/fields/has_one_field/show_component.rb
avo-2.21.3.pre.pr1489 app/components/avo/fields/has_one_field/show_component.rb
avo-2.21.2.pre.pr1486 app/components/avo/fields/has_one_field/show_component.rb
avo-2.21.1.pre.pr1484 app/components/avo/fields/has_one_field/show_component.rb
avo-2.21.0 app/components/avo/fields/has_one_field/show_component.rb
avo-2.21.1.pre.pr1476 app/components/avo/fields/has_one_field/show_component.rb
avo-2.21.1.pre.issue1450 app/components/avo/fields/has_one_field/show_component.rb
avo-2.21.1.pre.issue1444 app/components/avo/fields/has_one_field/show_component.rb
avo-2.20.0 app/components/avo/fields/has_one_field/show_component.rb
avo-2.19.0 app/components/avo/fields/has_one_field/show_component.rb