2

records というテーブルに school_id という列があります。

これで、school_ids の配列があり、配列に属する次の ID を持つすべてのレコードを削除したいと考えています。

問題は、たった 1 行のコマンドでそれを行う方法があるかということです。お気に入り:

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

現在、ここでループ処理を行っており、可能な限りその部分を単純化しようとしています。ティア

4

6 に答える 6

2

あなたはあなたの方法を使うことができます。Rails3.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 に答える