我在一个名为记录的表中有一个名为 school_id 的列。
现在我有一个 school_ids 数组,我想删除所有具有以下 id 且属于该数组的记录。
问题是,有没有办法只用一行命令来做到这一点?像:
Record.delete_all(:school_id => [1, 2, 3, 4])?
现在我在这里做一个循环,并尽可能地简化这部分。TIA
我在一个名为记录的表中有一个名为 school_id 的列。
现在我有一个 school_ids 数组,我想删除所有具有以下 id 且属于该数组的记录。
问题是,有没有办法只用一行命令来做到这一点?像:
Record.delete_all(:school_id => [1, 2, 3, 4])?
现在我在这里做一个循环,并尽可能地简化这部分。TIA
你可以用你的方式。我希望你使用的是 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)
看看这个destroy_all
它期望删除一个字符串、数组或 id 散列。
我经常为destroy_multiple向控制器添加另一个动作
def destroy_multiple
current_user.entries.destroy_all(:id => params[:user_ids])
redirect_to entries_url
end
不要忘记添加收集路线..
我对 Rails 不太了解,但您可以在 SQL 中轻松完成:
delete from records where school_id in (1,2,3,4)
希望有帮助吗?
School.where('id IN (?)', school_ids).destroy_all
Record.where(:school_id => [1, 2, 3, 4]).delete_all
这很简单
Record.where(school_id: school_ids).delete_all