2010-05-10 107 views
4

我有兩個模型,User和Account。每個用戶可能有一個帳戶。has_one更新問題

爲用戶創建一個帳戶工作正常。我的問題是,當我嘗試更新帳戶時,以前的帳戶user_id被取消,並且使用user_id創建新的帳戶行。我不希望發生這種情況。我想更新現有的行,並將其更改爲帳戶。我該怎麼做呢?

謝謝。

+1

向我們展示一些代碼。 – ryeguy 2010-05-10 16:24:36

+0

您能否發佈您用於'update'操作的代碼? – 2010-05-10 16:25:41

+0

@account = @ user.account.build(params [:account]); 如果@ account.save ... 其他 ... 結束 – 2010-05-10 16:40:39

回答

3

有了這個代碼

@account = @user.account.build(params[:account]) 
if @account.save 
    #... 
else 
    #... 
end 

你正在建設一個新的account。你需要的是更新

if @account.update_attributes(params[:account]) 
    #... 
else 
    #... 
end 
+0

update_attributes方法比在這種情況下更新更優雅......良好的通話 – Schneems 2010-05-10 17:00:08

+0

顯然我失去了我的「接受的解決方案」這一觀點:(再見再見點 – Schneems 2010-05-12 16:42:37

+0

haha​​h it happens = P – 2010-05-12 17:11:43

1

既然你沒有提供任何代碼,您說這是你如何創建一個用戶

user = User.create(:name => "bob") 

然後你就可以將用戶與帳戶通過指定USER_ID

account = Account.create(:user_id =>user.id, :status => "not activated") 

關聯現在讓我們說我們想改變賬戶的狀態。我們可以調用更新方法在軌道http://api.rubyonrails.org/classes/ActiveRecord/Base.html#M002270這樣的:

Account.update(account.id, :status => "activated") 

我可以用更多信息更有幫助。