Sha256: 1724af361ac611d4f57ce1df1ee8ac8ae6fc06556056d77e28af5bf891c1e258

Contents?: true

Size: 1.39 KB

Versions: 13

Compression:

Stored size: 1.39 KB

Contents

class RailsOps::Operation::Model::Update < RailsOps::Operation::Model::Load
  model_authorization_action :update
  lock_mode :exclusive

  # As this operation might extend the model class, we need to make sure that
  # the operation works using an extended 'copy' of the given model class.
  def self.always_extend_model_class?
    true
  end

  policy :before_perform do
    if model_authorization_action && self.class._model_authorization_lazy
      authorize_model! model_authorization_action, model
    end
  end

  def model_authorization
    return unless authorization_enabled?

    if self.class._model_authorization_lazy
      if load_model_authorization_action.nil?
        fail RailsOps::Exceptions::NoAuthorizationPerformed,
             "Operation #{self.class.name} must specify a " \
             'load_model_authorization_action because model ' \
             'authorization is configured to be lazy.'
      else
        authorize_model! load_model_authorization_action, model
      end
    elsif !load_model_authorization_action.nil?
      authorize_model_with_authorize_only! load_model_authorization_action, model
    end

    unless model_authorization_action.nil? || self.class._model_authorization_lazy
      authorize_model! model_authorization_action, model
    end
  end

  def build_model
    super
    build_nested_model_ops :update
    assign_attributes
  end

  def perform
    save!
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
rails_ops-1.5.8 lib/rails_ops/operation/model/update.rb
rails_ops-1.5.7 lib/rails_ops/operation/model/update.rb
rails_ops-1.5.6 lib/rails_ops/operation/model/update.rb
rails_ops-1.5.5 lib/rails_ops/operation/model/update.rb
rails_ops-1.5.4 lib/rails_ops/operation/model/update.rb
rails_ops-1.5.0 lib/rails_ops/operation/model/update.rb
rails_ops-1.4.8 lib/rails_ops/operation/model/update.rb
rails_ops-1.4.7 lib/rails_ops/operation/model/update.rb
rails_ops-1.4.6 lib/rails_ops/operation/model/update.rb
rails_ops-1.4.5 lib/rails_ops/operation/model/update.rb
rails_ops-1.4.4 lib/rails_ops/operation/model/update.rb
rails_ops-1.4.3 lib/rails_ops/operation/model/update.rb
rails_ops-1.4.2 lib/rails_ops/operation/model/update.rb