Class: ActiveRecord::Associations::AssociationProxy

Inherits:
Object
  • Object
show all
Defined in:
lib/composite_primary_keys/associations/association_proxy.rb

Instance Method Summary collapse

Instance Method Details

#full_columns_equals(table_name, keys, quoted_ids) ⇒ Object



4
5
6
7
8
9
10
11
12
13
# File 'lib/composite_primary_keys/associations/association_proxy.rb', line 4

def full_columns_equals(table_name, keys, quoted_ids)
  quoted_table_name = @owner.connection.quote_table_name(table_name)

  keys = [keys].flatten
  ids = [quoted_ids].flatten

  [keys,ids].transpose.map do |key, id|
  "(#{quoted_table_name}.#{@owner.connection.quote_column_name(key)} = #{id})"
  end.join(' AND ')
end

#set_belongs_to_association_for(record) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/composite_primary_keys/associations/association_proxy.rb', line 15

def set_belongs_to_association_for(record)
  if @reflection.options[:as]
    record["#{@reflection.options[:as]}_id"]   = @owner.id unless @owner.new_record?
    record["#{@reflection.options[:as]}_type"] = @owner.class.base_class.name.to_s
  else
    unless @owner.new_record?
      primary_key = @reflection.options[:primary_key] || :id
      # CPK
      # record[@reflection.primary_key_name] = @owner.send(primary_key)
      values = [@owner.send(primary_key)].flatten
      key_values = @reflection.cpk_primary_key.zip(values)
      key_values.each {|key, value| record[key] = value}
    end
  end
end