Имеет_и_принадлежит_к той же модели

У меня есть модель пользователя, которая должна «владеть» собой. Это потому, что единственный способ для пользователя соединиться с другим - это если у него есть эта «привязка».

Итак... Я создал "модель соединения":

class CreateUserConnections < ActiveRecord::Migration
  def change
    create_table :user_connections, id: false do |t|
      t.string :token
      t.integer :user_a_id, :null => false
      t.integer :user_b_id, :null => false

      t.timestamps
    end
    add_index :user_connections, :token, unique: true
    add_index :user_connections, [:user_a_id, :user_b_id], unique: true
  end
end

а также

class UserConnection < ActiveRecord::Base

  belongs_to :user
  belongs_to :user_a, :class_name => 'User'
  belongs_to :user_b, :class_name => 'User'

  before_create :generate_token

  protected

  def generate_token
    self.token = loop do
      random_token = SecureRandom.urlsafe_base64(nil, false)
      break random_token unless UserConnection.exists?(token: random_token)
    end
  end
end

а затем создал отношение к моей пользовательской модели:

#unlocked users
  has_and_belongs_to_many :users,
                          :join_table => "user_connections",
                          :foreign_key => "user_a_id",
                          :association_foreign_key => "user_b_id"

Проблема в том, что когда я создаю отношения с пользователем, например:

User.find(1).users << User.find(2)

Он создает собственное отношение от Пользователя 1 к Пользователю 2, но я думал, что с отношением many_to_many отношение владения от пользователя 2 к 1 будет автоматическим.

Что мне здесь не хватает?

Спасибо заранее


person Hamdan    schedule 19.08.2014    source источник


Ответы (1)


Я должен сам создать обратную связь.

person Hamdan    schedule 23.09.2014