Module: Haku::Resourceable
- Defined in:
- lib/haku/resourceable.rb
Instance Method Summary collapse
- #create_resource(parent, attributes, ivar = nil, singleton: nil) ⇒ Object
- #destroy_resource(resource) ⇒ Object
- #persist_resource(resource, **save_options) ⇒ Object (also: #save_resource)
- #update_resource(resource, attributes) ⇒ Object
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, **) resource.tap do if resource.save() 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 |