2010-12-02 68 views
0

假设用户HAS_ONE:认购,认购belongs_to的:用户,和我使用accepts_nested_attributes_for就窝订阅属性为用户创建形式,什么是找到现有的最佳方式和更新,并订阅(如果存在)基于User.email == Subscription.email?如何更新现有的嵌套属性瓦特/没有FK

注意,现有的订阅可以有USER_ID =零

回答

1

也许你想要做的是使用电子邮件作为外键:

class User < ActiveRecord::Base 
    has_one :subscription, :foreign_key => "email", :primary_key => "email" 
end 
+0

HRM,是啊......我想过这样做。让我玩弄这个想法。谢谢。 – 2010-12-02 19:38:27

0

我可以想象,这将需要分割成两步过程:

  1. 找到您要更新的用户。
  2. 找到包含用户电子邮件地址的订阅(如果有),将用户的订阅设置为此记录。
  3. 正常更新用户。由于该关联现在存在(即user.subscription不会为零),订阅记录将正确更新。