使用has_one和belongs_to创建记录

时间:2014-01-15 18:18:51

标签: activerecord ruby-on-rails-4 belongs-to has-one

我有一个用户和一个团队模型。用户只能拥有一个团队,每个团队都属于一个用户。我正努力让协会双向工作。

团队模型:

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仍为零。我究竟做错了什么?

1 个答案:

答案 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

将返回该对象。