2014-01-15 59 views
0

我有一個用戶和團隊模型。用戶只能有一個團隊,每個團隊都屬於一個用戶。我正努力讓協會能夠雙向工作。使用has_one創建記錄並belongs_to

組隊模式:

class Team < ActiveRecord::Base 
    belongs_to :user 
end 

用戶模式:

class User < ActiveRecord::Base 
    has_one :team 
end 

我添加了一個TEAM_ID列到用戶表的user_id到團隊表。

我想創建一個團隊,爲用戶,以便在控制檯中我做了以下

@user = User.find_by(id: 4) 
@team = @user.build_team 

這創造了球隊以正確的USER_ID但對於用戶TEAM_ID仍然是零。我究竟做錯了什麼?

回答

0

我要刪除這個問題,因爲它可能是非常愚蠢的,但如果任何其他人得到的困惑,我,我在這裏找到了答案:http://ruby-on-rails.wonderhowto.com/how-to/use-one-one-association-when-using-ruby-rails-3-407824/

我現在知道的是,你有一個HAS_ONE關係並且外鍵出現在它擁有的Model的表格中。即用戶擁有一個團隊,所以團隊表需要一個user_id。用戶表不需要team_id。

@user.team = (name: "blah", rating: "blah blah") 

,然後,如果你想獲得球隊用戶則

@user.team 

將:

您可以通過使用

@team = @user.build_team 

像我一樣,或創建一個新的團隊返回該對象。