0

User has_one :subscription、Subscription belongs_to :user、および私が accept_nested_attributes_for を使用してサブスクリプション属性をユーザー作成フォームにネストしていると仮定すると、User.email == に基づいて既存のサブスクリプション (存在する場合) を見つけて更新する最良の方法は何ですか?サブスクリプション.email?

既存のサブスクリプションは user_id = nil になる可能性があることに注意してください

4

2 に答える 2

1

おそらく、あなたがやりたいことは、電子メールを外部キーとして使用することです。

class User < ActiveRecord::Base
  has_one :subscription, :foreign_key => "email", :primary_key => "email"
end
于 2010-12-02T19:37:46.620 に答える
0

これは 2 段階のプロセスに分割する必要があると思います。

  1. 更新するユーザーを見つけます。
  2. ユーザーの電子メール アドレスでサブスクリプション (存在する場合) を見つけ、ユーザーのサブスクリプションをこのレコードに設定します。
  3. 通常どおりユーザーを更新します。関連付けが存在するため (つまり、user.subscription が nil にならない)、サブスクリプション レコードが正しく更新されます。
于 2010-12-02T19:38:15.403 に答える