次のテーブル関係のモデルに関連付けを実装する最良の方法は何ですか?
現在の内容・目的
- これはレガシー データベースであるため、テーブル構造を同じに保ちます。
User
とそれらprimary address
を一度に保存するオプションが必要です。users
テーブルには、primaryaddressid
を指す列がありますuser_addresses
。addressid
テーブル。user_addresses
userid
テーブルにはを指すの外部キーがありますusers
。userid
これが私がこれまでに持っているものです。
# User model class associations
has_many :user_addresses, :foreign_key => "userid", :autosave => true
belongs_to :primary_address, :class_name => "UserAddress", :foreign_key => "primaryaddressid", :autosave => true
そして、オプションで、次のようなプライマリアドレスでユーザーを作成できるようにしたいと思います...
User.new
User.primary_address.build(:street => 'dfkslf', :street2 => 'dfjkslfjlks231', etc)
User.save
これにより、レコードが保存され、User テーブルの primaryaddressid が自動的に更新されます。
質問...
私の主なオプションは、値がafter_save
あるかどうかを検証する を作成し、そうでない場合は、指定されて挿入された最新のアドレスをprimaryaddressid
探し、をユーザーに追加して更新することだと考えています。user_addresses
userid
addressid
この状況を処理して、ユーザーを追加し、パフォーマンスへの影響を最小限に抑えながら、最大限の柔軟性を実現する最善の方法は何ですか?