我有和用户模型需要拥有'本身。这是因为用户与另一个用户连接的唯一方法是,如果他们有这样的“绑定”。
所以...我创建了一个'加入模型':
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的所有权关系将是自动的。
我在这里失踪了什么?
提前完成
答案 0 :(得分:0)
我应该自己创造反向关系。