2

我在一个名为记录的表中有一个名为 school_id 的列。

现在我有一个 school_ids 数组,我想删除所有具有以下 id 且属于该数组的记录。

问题是,有没有办法只用一行命令来做到这一点?像:

Record.delete_all(:school_id => [1, 2, 3, 4])?

现在我在这里做一个循环,并尽可能地简化这部分。TIA

4

6 回答 6

2

你可以用你的方式。我希望你使用的是 Rails 3.x

Record.delete_all(:school_id => [1, 2, 3, 4])

它生成 SQL

DELETE FROM "records" WHERE "records"."school_id" IN (1, 2, 3, 4)
于 2012-12-03T07:41:17.223 回答
1

看看这个destroy_all

它期望删除一个字符串、数组或 id 散列。

我经常为destroy_multiple向控制器添加另一个动作

def destroy_multiple
  current_user.entries.destroy_all(:id => params[:user_ids])
  redirect_to entries_url
end

不要忘记添加收集路线..

于 2012-12-03T04:12:41.060 回答
0

我对 Rails 不太了解,但您可以在 SQL 中轻松完成:

delete from records where school_id in (1,2,3,4)

希望有帮助吗?

于 2012-12-03T04:11:23.487 回答
0
School.where('id IN (?)', school_ids).destroy_all
于 2012-12-03T04:17:53.837 回答
0
Record.where(:school_id => [1, 2, 3, 4]).delete_all
于 2019-03-08T09:56:08.577 回答
0

这很简单

Record.where(school_id: school_ids).delete_all
于 2019-03-22T10:07:08.317 回答