class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
has_many :developments, dependent: :destroy
has_many :connections
has_many :connections, dependent: :destroy
has_many :contacts, -> { where connections: { status: :accepted }}, through: :connections
has_many :requested_contacts, -> { where connections: {status: :requested}}, through: :connections, source: :contact
has_many :pending_contacts, -> { where connections: { status: :pending }}, through: :connections, source: :contact
has_many :blocked_contacts, -> { where connections: { status: :blocked }}, through: :connections, source: :contactclass Connection < ApplicationRecord
belongs_to :user
belongs_to :contact, class_name: 'User'
enum status: {pending: 0, requested: 1, accepted: 2, blocked: 3}
# id: 1
# contact: 2
# user_id: 1, contact_id: 2, status: :requested
# user_id: 2, contact_id: 1, status: :pending
end