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

时间:2018-02-14 00:26:14

标签: ruby-on-rails associations

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

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

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

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

我正在使用名为Relationship的连接模型。

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

它有效,但我希望使用自引用关联只有一对一的关系。

我做错了什么?谢谢!

1 个答案:

答案 0 :(得分:1)

尝试function logResults(json) { const [one, two] = json; if (one.error) { throw new Error('error at logResults'); } return [one, two]; // or just `json`? }