Class: JsonapiCompliable::Adapters::ActiveRecord

Inherits:
Abstract
  • Object
show all
Defined in:
lib/jsonapi_compliable/adapters/active_record.rb

Instance Method Summary collapse

Methods inherited from Abstract

#sideload

Instance Method Details

#associate(parent, child, association_name, association_type) ⇒ Object



52
53
54
55
56
57
58
59
# File 'lib/jsonapi_compliable/adapters/active_record.rb', line 52

def associate(parent, child, association_name, association_type)
  if association_type == :has_many
    parent.association(association_name).loaded!
    parent.association(association_name).add_to_target(child, :skip_callbacks)
  else
    child.send("#{association_name}=", parent)
  end
end

#average(scope, attr) ⇒ Object



22
23
24
# File 'lib/jsonapi_compliable/adapters/active_record.rb', line 22

def average(scope, attr)
  scope.average(attr).to_f
end

#count(scope, attr) ⇒ Object



18
19
20
# File 'lib/jsonapi_compliable/adapters/active_record.rb', line 18

def count(scope, attr)
  scope.count
end

#create(model_class, create_params) ⇒ Object



61
62
63
64
65
# File 'lib/jsonapi_compliable/adapters/active_record.rb', line 61

def create(model_class, create_params)
  instance = model_class.new(create_params)
  instance.save
  instance
end

#destroy(model_class, id) ⇒ Object



73
74
75
76
77
# File 'lib/jsonapi_compliable/adapters/active_record.rb', line 73

def destroy(model_class, id)
  instance = model_class.find(id)
  instance.destroy
  instance
end

#filter(scope, attribute, value) ⇒ Object



6
7
8
# File 'lib/jsonapi_compliable/adapters/active_record.rb', line 6

def filter(scope, attribute, value)
  scope.where(attribute => value)
end

#maximum(scope, attr) ⇒ Object



30
31
32
# File 'lib/jsonapi_compliable/adapters/active_record.rb', line 30

def maximum(scope, attr)
  scope.maximum(attr)
end

#minimum(scope, attr) ⇒ Object



34
35
36
# File 'lib/jsonapi_compliable/adapters/active_record.rb', line 34

def minimum(scope, attr)
  scope.minimum(attr)
end

#order(scope, attribute, direction) ⇒ Object



10
11
12
# File 'lib/jsonapi_compliable/adapters/active_record.rb', line 10

def order(scope, attribute, direction)
  scope.order(attribute => direction)
end

#paginate(scope, current_page, per_page) ⇒ Object



14
15
16
# File 'lib/jsonapi_compliable/adapters/active_record.rb', line 14

def paginate(scope, current_page, per_page)
  scope.page(current_page).per(per_page)
end

#resolve(scope) ⇒ Object



38
39
40
# File 'lib/jsonapi_compliable/adapters/active_record.rb', line 38

def resolve(scope)
  scope.to_a
end

#sideloading_module ⇒ Object



48
49
50
# File 'lib/jsonapi_compliable/adapters/active_record.rb', line 48

def sideloading_module
  JsonapiCompliable::Adapters::ActiveRecordSideloading
end

#sum(scope, attr) ⇒ Object



26
27
28
# File 'lib/jsonapi_compliable/adapters/active_record.rb', line 26

def sum(scope, attr)
  scope.sum(attr)
end

#transaction(model_class) ⇒ Object



42
43
44
45
46
# File 'lib/jsonapi_compliable/adapters/active_record.rb', line 42

def transaction(model_class)
  model_class.transaction do
    yield
  end
end

#update(model_class, update_params) ⇒ Object



67
68
69
70
71
# File 'lib/jsonapi_compliable/adapters/active_record.rb', line 67

def update(model_class, update_params)
  instance = model_class.find(update_params.delete(:id))
  instance.update_attributes(update_params)
  instance
end