Schienen in Array schieben spart Objekt

Ich habe ein interessantes Problem. Ich benutze Ruby 1.9.2 und Rails 3.1.3.

Ich habe 2 Modelle, zur Vereinfachung sagen wir Kunden und Geschäfte. Geschäfte haben viele Kunden, und ein Kunde gehört zu einem Geschäft. Ich versuche, alle Kunden für ein Geschäft zu sammeln und einen Platz für ein paar mehr zu schaffen, den ich später mit Werten füllen kann. Stattdessen wird customer.save aufgerufen, wenn ich es nicht erwarte.

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

Aus irgendeinem Grund wird customer.save aufgerufen, wenn der Kunde in das Array verschoben wird. Es passiert nicht, wenn Sie auf ein Array pushen, das ein einfaches Array und keine Beziehung ist.

Ich habe eine Problemumgehung gefunden, frage mich aber immer noch, warum das passiert. Die Problemumgehung:

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

Antworten auf die Frage(2)

Ihre Antwort auf die Frage