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