0

Rails 3.0.9でアプリケーションを作成しました...そのアプリケーションには、アドレスフィールドを持つフォームが1つあります。ユーザーが最初に住所フィールド (「ABC」など) を入力した場合、ステータスは 1 になりますが、別のときにユーザーが新しい住所 (「XYZ」など) を入力してから送信すると、ステータスは 1 になり、ABC ステータスは 0 になります。 .
ここで、ユーザーが「PQR」などの別のアドレスを入力して送信すると、そのステータスは 1 になり、XYZ ステータスは 0 になります。
たとえば、データベースには 10 個のアドレスがあり、最初の 9 個のアドレスのステータスは 0 で、10 番目のアドレスは 1 です。ユーザーが別のアドレスを入力すると、11 番目は 1、10 番目は 0 になるはず
です。実行時に値を変更する方法がわかりませんテーブルで...

4

1 に答える 1

0

これは、 ActiveRecord の update_all メソッドで実行できます。モデルでコールバックを定義するだけです。

before_create :update_address_statuses

def update_address_statuses
  MyModel.update_all("status = 0")
  self.status = 1
end

ただし、blackbird07 が指摘したように、アプリケーションでアドレスを使用する方法を再考し、テーブルのすべてのフィールドを更新するのではなく、最近更新されたアドレスを取得する必要があるでしょう。

于 2012-06-04T09:09:56.480 に答える