【问题标题】:creating a record with has_one and belongs_to使用 has_one 和 belongs_to 创建记录
【发布时间】:2014-01-15 18:18:51
【问题描述】:

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

团队模型:

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

【问题讨论】:

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


    【解决方案1】:

    我打算删除这个问题,因为它可能很愚蠢,但万一其他人像我一样困惑,我在这里找到了答案:http://ruby-on-rails.wonderhowto.com/how-to/use-one-one-association-when-using-ruby-rails-3-407824/

    我现在理解的是,您有一个 has_one 关系,并且外键出现在它“拥有”的模型表中。 IE。一个用户有一个团队,所以团队表需要一个 user_id。 users 表不需要 team_id。

    您可以使用创建新团队

    @team = @user.build_team
    

    正如我所做的那样或:

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

    然后如果你想获得团队用户然后

    @user.team
    

    将返回该对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-01
      • 2014-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多