2015-02-23 63 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)