2010-05-10 124 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") 

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