0

コントローラから取得した変数があります。その変数の値を持つレコードがDBにあるかどうかを確認したいと思います。ある場合は、そのレコードを削除します。私のユーザーモデルには、文字列である「数値」属性があります。コントローラの擬似コードは次のようになります。

from_number = params["From"]

if @user.number == from_number
   # find a record in the DB with that value and delete it
   User.find(from_number)
   @user.destroy
else
   puts "don't delete DB record"
end

これをコントローラーで実行できますか、それともモデルで実行する必要がありますか?モデルで実行する必要がある場合、from_numberをモデルに渡して処理するにはどうすればよいですか?

ありがとう!

4

2 に答える 2

0

一部の属性に特定の値がある場合に特定のIDを持つユーザーを削除するには、次のようにします。

User.where(value: 'something').delete_all

これはモデルをインスタンス化しないため、コールバックを起動しないことに注意してください。

あなたはすでにユーザーを持っているのでスニペットは少し混乱しているので、これがあなたが望むものであるかどうかはわかりません。それを破壊するためだけにもう一度取得してください。

于 2012-11-16T13:45:59.447 に答える
0

以下のコードを使用すると、データベース内の既存のユーザーが削除され、このインスタンスのすべてのコールバックが呼び出されます

User.where(number: params["From"]).first.try(:destroy)

したがって、「ifelse」と書く必要はありません。また、このコードはコントローラーにのみ配置する必要があります。

于 2012-11-16T13:53:45.577 に答える