无法创建 has_one 关联,抛出未定义方法新错误

Cannot create has_one association, throws undefined method new error

我正在尝试在 Rails 5 中建立一对一关联,基本上,我只希望用户只连接到一个用户。

所以我希望能够在我的 rails 控制台中执行此操作:

User.first.relationship.new(:partner_id => 2)

能够设置和检索特定用户的合作伙伴。

我正在使用称为关系的连接模型。

class Relationship < ApplicationRecord
  belongs_to :user
  belongs_to :partner, :class_name => "User"
end

还有一个用户模型。

class User < ApplicationRecord
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable,
         :confirmable

  has_one :relationship
  has_one :partner, :through => :relationship

  validates_presence_of :first_name, :last_name
end

我生成了这样的关系模型:rails g model Relationship user:references partner_id:integer

当我执行 User.first.relationship.new() 时,它会在 rails 控制台中抛出 NoMethodError: undefined method new for nil:NilClass

但是,当我将用户模型从 has_one 更改为 has_many 时:

has_many :relationships
has_many :partners, :through => :relationships

它有效,但我只想使用自引用关联建立一对一关系。

我做错了什么?谢谢!

尝试User.first.create_relationship(relationship_params) ?