Los rieles empujan en la matriz, guardan el objeto

Tengo un problema interesante. Estoy usando Ruby 1.9.2 y Rails 3.1.3.

Tengo 2 modelos, para simplificar digamos clientes y tiendas. Las tiendas tienen muchos clientes, y un cliente pertenece a una tienda. Estoy tratando de reunir a todos los clientes de una tienda y crear un lugar para unos cuantos más que pueda poblar con valores más adelante. En su lugar, customer.save se llama cuando no lo espero.

store = Store.find(1)
customers_array = store.customers
random_array = Array.new
customers_count = customers_array.count + 1 

(customers_count..2).each do |i|
  customer = Customer.new
  c.id = "#{i}000000000000"
  random_array << customer # this line doesn't call customer.save
  customers_array << customer # this line calls customer.save when store has customers
end

Por alguna razón, cuando el cliente se inserta en la matriz, se llama a customer.save. No sucede si se empuja a una matriz, es una matriz simple y no una relación.

Encontré una solución alternativa, pero todavía me pregunto por qué sucede eso. La solución:

store = Store.find(1)
initial_customers_array = store.customers
additional_customers_array = Array.new
customers_count = initial_customers_array.count + 1 

(customers_count..2).each do |i|
  customer = Customer.new
  c.id = "#{i}000000000000"
  additional_customers_array << customer 
end
customers_array = initial_customers_array + additional_customers_array

Respuestas a la pregunta(2)

Su respuesta a la pregunta