2015-02-23 152 views
0

嗨,我有一些問題。如何刪除初始化沒有保存嵌套的對象?

我用三個嵌套對象(例如Item)初始化Object(例如List)而不保存。

@list = List.new 
@list.items.build(position: 1) 
@list.items.build(position: 2) 
@list.items.build(position: 3) 

而且我想刪除/銷燬位置= 3的位置。那是怎麼回事?

我試圖刪除項是這樣的:

@list.items.select {|item| item.position == 3 }.delete 

但仍@ list.items.size爲3。任何想法如何解決呢?

+0

'@ list.items.where(位置:3).destroy_all' – 2015-02-23 14:43:35

+0

@RajarshiDas他想刪除一個模型, 不是所有的人。 – Jesper 2015-02-23 14:44:23

+0

oooh一個記錄? '@ list.items.find_by(position:3).destroy' – 2015-02-23 14:45:37

回答

2

我打算假設這些對象是ActiveRecord模型。

你堅持模型嗎? delete是你會運行一個持久模型的東西。沒有太多的東西沒有太大的意義。另外,從集合中刪除的東西,你通常會運行集合本身的刪除方法:

@list.items.delete(@list.items.select {|i| i.position == 3 }) 
0

您能用delete_at嗎?並傳入要刪除的項目的索引。請注意,此方法返回刪除的項目。

@list.items.delete_at(2)