Module: CompositePrimaryKeys::CompositeRelation

Includes:
ActiveRecord::Batches, ActiveRecord::Calculations, ActiveRecord::FinderMethods, ActiveRecord::QueryMethods
Defined in:
lib/composite_primary_keys/composite_relation.rb

Instance Method Summary collapse

Methods included from ActiveRecord::QueryMethods

#reverse_sql_order

Methods included from ActiveRecord::FinderMethods

#apply_join_dependency, #exists?, #find_nth_with_limit, #find_one, #find_some, #find_some_ordered, #find_with_ids, #last, #limited_ids_for

Methods included from ActiveRecord::Calculations

#aggregate_column, #build_count_subquery, #execute_simple_calculation

Methods included from ActiveRecord::Batches

#in_batches

Instance Method Details

#delete(id_or_array) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/composite_primary_keys/composite_relation.rb', line 8

def delete(id_or_array)
  # CPK
  if self.composite?
    id_or_array = if id_or_array.is_a?(CompositePrimaryKeys::CompositeKeys)
                    [id_or_array]
                  else
                    Array(id_or_array)
                  end

    id_or_array.each do |id|
      # Is the passed in id actually a record?
      id = id.kind_of?(::ActiveRecord::Base) ? id.id : id
      where(cpk_id_predicate(table, self.primary_key, id)).delete_all
    end
  else
    where(primary_key => id_or_array).delete_all
  end
end

#destroy(id_or_array) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/composite_primary_keys/composite_relation.rb', line 27

def destroy(id_or_array)
  # Without CPK:
  #if id.is_a?(Array)
  #  id.map { |one_id| destroy(one_id) }
  #else
  #  find(id).destroy
  #end

  id_or_array = if id_or_array.kind_of?(CompositePrimaryKeys::CompositeKeys)
    [id_or_array]
  else
    Array(id_or_array)
  end

  id_or_array.each do |id|
    where(cpk_id_predicate(table, self.primary_key, id)).each do |record|
      record.destroy
    end
  end
end