Rails проталкивает в массив сохраняет объект
У меня есть интересная проблема. Я использую Ruby 1.9.2 и Rails 3.1.3.
У меня есть две модели, для упрощения скажем, покупатели и магазины. У магазинов много покупателей, а покупатель принадлежит к магазину. Я пытаюсь собрать всех покупателей для магазина и создать место для еще нескольких, чтобы потом заполнить их значениями. Вместо этого вызывается customer.save, когда я этого не ожидаю.
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
По какой-то причине, когда клиент помещается в массив, вызывается customer.save. Этого не произойдет, если вы передадите массиву простой массив, а не отношение.
Я нашел обходной путь, но мне все еще интересно, почему это происходит. Обходной путь:
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