Sha256: 977b4d7f00b0d133e600ee69e9557da7cb4527bab28b9ff176ea7fe8180d73d8

Contents?: true

Size: 1.05 KB

Versions: 40

Compression:

Stored size: 1.05 KB

Contents

module ForestLiana
  class BelongsToUpdater
    attr_accessor :errors

    def initialize(resource, association, params)
      @resource = resource
      @association = association
      @params = params
      @data = params['data']
      @errors = nil
    end

    def perform
      begin
        @record = @resource.find(@params[:id])
        if (SchemaUtils.polymorphic?(@association))
          if @data.nil?
            new_value = nil
          else
            association_klass = SchemaUtils.polymorphic_models(@association).select { |a| a.name == @data[:type] }.first
            new_value = association_klass.find(@data[:id]) if @data && @data[:id]
          end
        else
          new_value = @association.klass.find(@data[:id]) if @data && @data[:id]
        end
        @record.send("#{@association.name}=", new_value)

        @record.save
      rescue ActiveRecord::SerializationTypeMismatch => exception
        @errors = [{ detail: exception.message }]
      rescue => exception
        @errors = [{ detail: exception.message }]
      end
    end
  end
end

Version data entries

40 entries across 40 versions & 1 rubygems

Version Path
forest_liana-9.11.1 app/services/forest_liana/belongs_to_updater.rb
forest_liana-9.11.0 app/services/forest_liana/belongs_to_updater.rb
forest_liana-9.10.6 app/services/forest_liana/belongs_to_updater.rb
forest_liana-9.10.5 app/services/forest_liana/belongs_to_updater.rb
forest_liana-9.10.4 app/services/forest_liana/belongs_to_updater.rb
forest_liana-9.10.3 app/services/forest_liana/belongs_to_updater.rb
forest_liana-9.10.2 app/services/forest_liana/belongs_to_updater.rb
forest_liana-9.10.1 app/services/forest_liana/belongs_to_updater.rb
forest_liana-9.10.0 app/services/forest_liana/belongs_to_updater.rb
forest_liana-9.9.1 app/services/forest_liana/belongs_to_updater.rb
forest_liana-9.9.0 app/services/forest_liana/belongs_to_updater.rb
forest_liana-9.8.0 app/services/forest_liana/belongs_to_updater.rb
forest_liana-9.7.0 app/services/forest_liana/belongs_to_updater.rb
forest_liana-9.6.4 app/services/forest_liana/belongs_to_updater.rb
forest_liana-9.6.3 app/services/forest_liana/belongs_to_updater.rb
forest_liana-9.6.0 app/services/forest_liana/belongs_to_updater.rb
forest_liana-9.5.7 app/services/forest_liana/belongs_to_updater.rb
forest_liana-9.5.6 app/services/forest_liana/belongs_to_updater.rb
forest_liana-9.5.5 app/services/forest_liana/belongs_to_updater.rb
forest_liana-9.5.4 app/services/forest_liana/belongs_to_updater.rb