2015-09-25 3 views
0

Есть ли способ сделать следующее ?:как разрушить отношения ActiveRecord в Rails 4.2

>items=Item.where('location_id=?',8) 
>items.count # 12; now delete all of them 
>items.destroy 

Я знаю, что я мог бы сделать Item.destroy_all('location_id=?',8), но я предпочел бы сделать подсчет, чтобы проверить свою работу перед тем, как разрушительная операция.

ТНХ

+1

возможно дубликат [Как удалить в активной записи?] (Http://stackoverflow.com/questions/4177686/how- do-you-delete-in-active-record) –

+0

@BradWerth не обман – timpone

+1

Да, это так. Посмотрите на пункт 3 в вопросе. Это именно то, что вы пытаетесь сделать. Обратите внимание, как ответы на этот вопрос в точности совпадают с ответами на этот вопрос. Вы действительно думаете, из десяти миллионов вопросов, что вы первый человек, который спрашивает, как удалить что-то в рельсах? Это было самым очевидным из 50 возможных кандидатов ... –

ответ

3

Вы можете сделать это с помощью ActiveRecord::Relation#destroy_allmethod:

items.destroy_all 

или

Item.destroy_all(location_id: 8) 

каждая запись будет уничтожен один за другим. Если вы хотите, чтобы удалить его быстро, без дополнительной проверки, используйте delete_all вместо:

items.delete_all 
# or 
Item.delete_all(location_id: 8) 
+0

поэтому destroy_all слишком рискован. Я хочу сделать, где, проверить, а затем действовать на отношение ActiveRecord. – timpone

+0

Что не хватает тогда? – dimakura

+0

проверить счет и действовать по отношению. Например, если вы используете 'rails c' для производства. destroy_all взял бы условие, и я бы скорее просто работал над этим отношением. – timpone

2

Метод называется #destroy_all.

items.destroy_all 
+0

, поэтому я хочу сначала найти, проверить через счет, а затем уничтожить все из них; destroy_all принимает условие, а затем уничтожает их – timpone

+0

@timpone это будет работать как запрошено ... Вам не нужно условие для метода экземпляра. Вы даже попробовали? –

Смежные вопросы