0

この質問の言い回しがうまくいかないので、答えを見つけるのにも苦労しています。うまくいけば、誰かが私をよりよく言葉にするのを手伝ってくれるでしょう。とにかく、特定のデータベース行と、既に存在するかどうかに関係なく別の行との再関連付けを管理するための標準的な手順が見つかりません。たとえば、次の 2 つのモデルがあるとします。

class Residence  < ActiveRecord::Base
  belongs_to :zipcode
end

...

class Zipcode < ActiveRecord::Base
  has_many :residences
end

ここで、データが台無しになり、住居の郵便番号を変更したいとします。郵便番号自体を変更したくないため (つまり、id=1 の郵便番号を 90123 ではなく 90210 に変更する)、標準的な Rails フォームを作成することはできません。住居を新しい郵便番号に再度関連付けたいと考えています。すでにデータベースにある場合とない場合があります。

これを行う方法はいくつか考えられますが、常に多対 1 の関係で行う方法のように思えます。それを行うための「ベスト プラクティス」の方法を学びたいと思います。 .

ありがとう!

4

1 に答える 1

0

誰も応答しておらず、私はすでに先に進んでいたので、この問題を処理するために決めたテクニックを共有することにしました。パラメータ配列で送り返す必要があったのは ID (おそらくエンド ユーザーが実際に目にすることのないもの) だったので、それを行う唯一のクリーンな方法は、別の郵便番号 ID に対して郵便番号テーブルへの AJAX 呼び出しを使用することでした。事実上、居住フォームには、ユーザーが郵便番号を入力し、返されたリストから選択できるようにする、任意の名前の入力要素が含まれていました。リストから郵便番号を選択すると、その ID が非表示フィールドに入力され、フォームと共に送信されました。update_attributes()そうでない場合は、フォームの送信時に郵便番号が作成 (および検証) され、居住オブジェクトを呼び出す前に、その ID が zipcode_id フィールドとして params 配列に追加されます。

誰かがこれを行うためのより良い方法を知っている場合は、共有してください。しかし、これは私にとってはうまくいきました。

于 2013-04-30T16:01:31.290 に答える