2010-12-02 62 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不會爲零),訂閱記錄將正確更新。