I'm trying to build a one to one association in Rails 5, basically, I just want users to connect to only one user.
So I want to be able to do this in my rails console:
User.first.relationship.new(:partner_id => 2)
To be able to set and retrieve the partner of a particular user.
I'm using a join model, called Relationship.
class Relationship < ApplicationRecord
belongs_to :partner, :class_name => "User"
And a User model.
class User < ApplicationRecord
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable,
has_one :partner, :through => :relationship
validates_presence_of :first_name, :last_name
I generated the Relationship model like this:
rails g model Relationship user:references partner_id:integer.
When I do a
User.first.relationship.new() it throws a
NoMethodError: undefined method new for nil:NilClass in the rails console.
However, when I change the User model from
has_many :partners, :through => :relationships
It works, but I want to have only a one to one relationship using a self-referential association.
What am I doing wrong? Thanks!