Module: Haku::Resourceable

Defined in:
lib/haku/resourceable.rb

Instance Method Summary collapse

Instance Method Details

#create_resource(parent, attributes, ivar = nil, singleton: nil) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
# File 'lib/haku/resourceable.rb', line 5

def create_resource(parent, attributes, ivar=nil, singleton: nil)
  parent.send(singleton ? "create_#{singleton}" : "create", attributes).tap do |resource|
    instance_variable_set("@#{ivar}", resource) if ivar.present?

    if resource.persisted?
      yield resource if block_given?
      success! resource: resource
    else
      failure! resource: resource, errors: resource.errors
    end
  end
end

#destroy_resource(resource) ⇒ Object



29
30
31
32
33
34
35
36
37
38
# File 'lib/haku/resourceable.rb', line 29

def destroy_resource(resource)
  resource.tap do
    if resource.destroy
      yield resource if block_given?
      success! resource: resource
    else
      failure! resource: resource, errors: resource.errors
    end
  end
end

#persist_resource(resource, **save_options) ⇒ Object Also known as: save_resource



40
41
42
43
44
45
46
47
48
49
# File 'lib/haku/resourceable.rb', line 40

def persist_resource(resource, **save_options)
  resource.tap do
    if resource.save(save_options)
      yield resource if block_given?
      success! resource: resource
    else
      failure! resource: resource, errors: resource.errors
    end
  end
end

#update_resource(resource, attributes) ⇒ Object



18
19
20
21
22
23
24
25
26
27
# File 'lib/haku/resourceable.rb', line 18

def update_resource(resource, attributes)
  resource.tap do
    if resource.update(attributes)
      yield resource if block_given?
      success! resource: resource
    else
      failure! resource: resource, errors: resource.errors
    end
  end
end