0

モデル内に次の仮想属性があります。

attr_accessor :city, :zip, :street, :suite

新規/編集フォームには、これらの属性ごとにフォーム フィールドがあります。address_lookup というメソッドを使用して、これら 4 つの属性を単一の address_id に変換できます。モデルに address_id を格納するだけです。コントローラーの作成/更新アクション、および (必要に応じて) モデルでこれをきれいに処理するための基本的なアプローチは何ですか? それは私の頭の上に少しあります。

4

1 に答える 1

1

before_save最も簡単なのは、コールバックを追加することです。配列を使用changedて、検索を行う前に、関心のある属性のいずれかが変更されたかどうかを確認します。

before_save :set_address

def set_address
  if address = Address.find_or_create_by( city: city, zip: zip, street: street, suite: suite)
    self.address = address
  end
end
于 2015-02-09T20:48:09.447 に答える