【问题标题】:How to destroy an ActiveRecord relation in Rails 4.2?如何在 Rails 4.2 中销毁 ActiveRecord 关系?
【发布时间】:2015-12-23 17:47:27
【问题描述】:

有没有办法做到以下几点?:

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

我知道我可以做到Item.destroy_all('location_id=?',8),但我宁愿在破坏性操作之前先清点一下我的工作。

【问题讨论】:

标签: ruby-on-rails activerecord


【解决方案1】:

你可以通过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)

【讨论】:

  • 所以 destroy_all 太冒险了。我想做一个 where,验证,然后对 ActiveRecord 关系采取行动。
  • 验证计数并对关系采取行动。就像您在生产中使用 rails c 一样。 destroy_all 会接受条件,我宁愿只处理关系。
  • @timpone 这将按要求工作...您不需要实例方法的条件。你试过了吗?
  • 是的,你说得对,我的历史上有问题。我的错。谢谢帮助
【解决方案2】:

该方法被称为#destroy_all

items.destroy_all

【讨论】:

  • 所以我想先做一个find,通过count验证,然后全部销毁; destroy_all 接受一个条件,然后销毁它们
  • @timpone 这将按要求工作...您不需要实例方法的条件。你试过了吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-12
相关资源
最近更新 更多