0

假设用户 has_one :subscription,Subscription belongs_to :user,我使用accepts_nested_attributes_for 将订阅属性嵌套到用户创建表单中,基于User.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

我想这需要分为两个步骤:

  1. 找到要更新的用户。
  2. 使用用户的电子邮件地址找到订阅(如果有),将用户的订阅设置为此记录。
  3. 正常更新用户。由于现在存在关联(即 user.subscription 不会为 nil),订阅记录将正确更新。
于 2010-12-02T19:38:15.403 回答