我有一个用户和一个团队模型。用户只能拥有一个团队,每个团队都属于一个用户。我正努力让协会双向工作。
团队模型:
class Team < ActiveRecord::Base
belongs_to :user
end
用户模型:
class User < ActiveRecord::Base
has_one :team
end
我已将team_id列添加到users表,将user_id添加到teams表。
我想为用户创建一个团队,所以在控制台中我做了以下
@user = User.find_by(id: 4)
@team = @user.build_team
使用正确的user_id创建了一个团队,但用户的team_id仍为零。我究竟做错了什么?
答案 0 :(得分:0)
我打算删除这个问题,因为它可能非常愚蠢,但如果其他任何人像我一样困惑我在这里找到了答案:http://ruby-on-rails.wonderhowto.com/how-to/use-one-one-association-when-using-ruby-rails-3-407824/
我现在理解的是,你有一个has_one关系,外键出现在它所拥有的模型表中。即用户has_one团队,因此团队表需要user_id。 users表不需要team_id。
您可以使用
创建新的团队@team = @user.build_team
正如我所做的那样:
@user.team = (name: "blah", rating: "blah blah")
然后如果你想让团队用户
@user.team
将返回该对象。