Class: Databound::Manager

Inherits:
Object
  • Object
show all
Defined in:
lib/databound/manager.rb

Instance Method Summary collapse

Constructor Details

#initialize(controller) ⇒ Manager

Returns a new instance of Manager.



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/databound/manager.rb', line 4

def initialize(controller)
  @model = controller.send(:model)
  @permitted_columns = controller.send(:permitted_columns)

  scope_js = controller.params[:scope]
  data_js = controller.params[:data]
  extra_find_scopes_js = controller.params[:extra_find_scopes] || '[]'

  @scope = Databound::Data.new(controller, scope_js)
  @data = Databound::Data.new(controller, data_js).to_h

  @extra_find_scopes = JSON.parse(extra_find_scopes_js).map do |extra_scope|
    Databound::Data.new(controller, extra_scope)
  end
end

Instance Method Details

#create_from_dataObject



31
32
33
34
# File 'lib/databound/manager.rb', line 31

def create_from_data
  check_params!
  @model.where(@scope.to_h).create(@data)
end

#destroy_from_dataObject



46
47
48
# File 'lib/databound/manager.rb', line 46

def destroy_from_data
  @model.find(@data['id']).destroy
end

#find_scoped_recordsObject



20
21
22
23
24
25
26
27
28
29
# File 'lib/databound/manager.rb', line 20

def find_scoped_records
  records = []
  records << @scope.records(@model)

  @extra_find_scopes.each do |extra_scope|
    records << extra_scope.records(@model)
  end

  records.map { |record| record.where(@data) }.flatten
end

#update_from_dataObject



36
37
38
39
40
41
42
43
44
# File 'lib/databound/manager.rb', line 36

def update_from_data
  id = @data.delete('id')

  check_params!
  record = @model.find(id)
  record.update(@data)

  record
end