2013-12-11 18 views
0

我正在爲兩個變量分配插槽,但是當我使用一個變量刪除插槽時,數據也會從另一個變量中刪除。我想保留其他變量的數據。請幫忙!即使在將數據從數據庫中刪除之後,數據的陣列也應該存在

slot_list = banner_slots = slots.where(:slot_datetime => date_begin..(startdate - 2.minutes)) 
banner_slots.delete_all 
p slot_list 

但它返回一個空數組#<ActiveRecord::AssociationRelation []>

回答

1

紅寶石使用參考來存儲變量。所以,實際上slot_listbanner_slots都指向相同的參考。一旦一個變量被刪除,另一個變量也會丟失。

通常情況下,要保留需要克隆的變量。

> a = 'foo' 
> b = a 
> c = a.clone 

> a = 'bar' 
> b 
# 'bar' 
> c 
# 'foo' 

您還可以使用克隆上的ActiveRecord::Relation對象。

banner_slots = slots.where(foo: 'bar') 
slot_list = banner_slots.clone 
banner_slots.delete_all 
> slot_list 
# will return records EVEN WITH ID! 

小心使用這項。這不是ActiveRecord對象的行爲。當您刪除一系列對象時,這意味着他們得到了刪除了數據庫。所以剩下的slot_list與ID實際上意味着什麼,但一些屬性。他們不能再代表db數據。

我只是解釋你爲什麼看到那個,並介紹clone。即使它可能會做的伎倆,我不建議你這樣做。而是嘗試另一種方式。

相關問題