如何删除已初始化的未保存的嵌套对象?

时间:2015-02-23 14:34:00

标签: ruby-on-rails ruby ruby-on-rails-4

嗨,我有一些问题。

我使用三个嵌套对象(例如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.任何想法如何解决?

2 个答案:

答案 0 :(得分:2)

我将假设这些对象是ActiveRecord模型。

你坚持模特吗? delete是您运行持久模型的东西。对于没有经验的东西,它没有多大意义。此外,要从集合中删除某些内容,通常会对集合本身运行delete方法:

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

答案 1 :(得分:0)

你能使用delete_at吗?并传入要删除的项目的索引。请注意,此方法返回已删除的项目。

@list.items.delete_at(2)