无法创建 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) ?
我正在尝试在 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) ?