2015-02-23 2 views
0

Привет У меня есть вопрос.Как удалить инициализированный файл не удалось сохранить вложенный объект?

Я инициализирую объект (например, список) тремя вложенными объектами (например, элементом) без сохранения.

@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' –

+0

@RajarshiDas Он хочет, чтобы удалить одну модель , не все из них. – Jesper

+0

oooh один запись? '@ list.items.find_by (позиция: 3) .destroy' –

ответ

2

Я предполагаю, что эти объекты являются моделями ActiveRecord.

Вы сохраняете модели? delete - это то, что вы использовали бы в сохраненной модели. Это не имеет особого смысла в неприкрытых вещах. Кроме того, чтобы удалить что-то из коллекции вы обычно запустить метод удаления на самой коллекции:

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

Не могли бы вы использовать delete_at? И перейдите в индекс элемента, который хотите удалить. Обратите внимание, что этот метод возвращает элемент удален.

@list.items.delete_at(2) 
Смежные вопросы