Class: Prepro::Processor

Inherits:
Object
  • Object
show all
Defined in:
lib/prepro/processor.rb

Class Method Summary collapse

Class Method Details

.create(model_attrs, actor, options = {}) ⇒ Object Also known as: create_original

Creates a new model_instance based on model_attrs. @param model_attrs The attributes for the new model_instance. Includes DB columns,

associated objects, nested attributes, etc.

@param[User, AnonymousUser, Nil] actor The actor who creates the model_instance @param[Hash, optional] options:

* :enforce_permissions - default true

@return[Array<ModelInstance, Boolean>] A tuple with the newly created model_instance and a

success flag.


15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/prepro/processor.rb', line 15

def self.create(model_attrs, actor, options = {})
  options = {
    :enforce_permissions => true
  }.merge(options)
  processor_attrs = OpenStruct.new(
    :attributes => model_attrs, :actor => actor, :options => options
  )
  model_instance = model_class.new
  if options[:enforce_permissions]
    enforce_permissions(model_instance.creatable_by?(actor))
  end
  before_assign_attributes_on_create(model_instance, processor_attrs)
  model_instance.assign_attributes(model_attrs, :as => options[:as])
  before_save_on_create(model_instance, processor_attrs)
  success = model_instance.save
  [model_instance, success]
end

.destroy(model_id, actor, options = {}) ⇒ Object

Destroys an existing model_instance based on model_id @param[Integer, String<Number>] model_id The id of the model_instance to be destroyed @param[User, AnonymousUser, Nil] actor The actor who updates the model_instance @return[Array<ModelInstance, Boolean>] A tuple with the destroyed model_instance and a success flag.



55
56
57
58
59
60
61
62
# File 'lib/prepro/processor.rb', line 55

def self.destroy(model_id, actor, options = {})
  model_instance = model_class.find(model_id)
  if options[:enforce_permissions]
    enforce_permissions(model_instance.destroyable_by?(actor))
  end
  model_instance.destroy
  [model_instance, true]
end

.update(model_attrs, actor, options = {}) ⇒ Object Also known as: update_original

Updates an existing model_instance based on model_attrs. @param model_attrs The attributes for the updated model_instance. Includes DB columns,

the model's id, associated objects, nested attributes, etc.

@param[User, AnonymousUser, Nil] actor The actor who updates the model_instance @return[Array<ModelInstance, Boolean>] A tuple with the updated model_instance and a success flag.



38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/prepro/processor.rb', line 38

def self.update(model_attrs, actor, options = {})
  processor_attrs = OpenStruct.new(:attributes => model_attrs, :actor => actor, :options => options)
  model_instance = model_class.find(model_attrs[:id])
  if options[:enforce_permissions]
    enforce_permissions(model_instance.updatable_by?(actor))
  end
  before_assign_attributes_on_update(model_instance, processor_attrs)
  model_instance.assign_attributes(model_attrs, :as => options[:as])
  before_save_on_update(model_instance, processor_attrs)
  success = model_instance.save
  [model_instance, success]
end