【发布时间】:2018-08-07 16:38:01
【问题描述】:
我有一个带有多对多自连接表的用户模型,如下所示
class User < ActiveRecord::Base
has_many :follower_relationships, foreign_key: :user_2_id, class_name: 'Relationship'
has_many :followee_relationships, foreign_key: :user_1_id, class_name: 'Relationship'
has_many :followers_all, through: :follower_relationships, source: :user_1
has_many :followees_all, through: :followee_relationships, source: :user_2
使用以下模型创建连接
class Relationship < ActiveRecord::Base
belongs_to :user_1, class_name: 'User', foreign_key: :user_1_id
belongs_to :user_2, class_name: 'User', foreign_key: :user_2_id
简而言之,一个用户可以有很多关注者,也可以关注很多用户。当 UserA 跟随 UserB 时,将创建一条关系记录,其中 user_1 = UserA 和 user_2 = UserB。
我需要实施唯一性验证,以确保 UserA 和 UserB 之间仅存在一条记录。因此,如果记录存在
user_1 == UserA AND user_2 == UserB
那么在哪里不应该存在其他关系
Either
user_1 == UserA and user_2 == UserB
OR
user_1 == UserB and user_2 == UserA
【问题讨论】:
标签: validation ruby-on-rails-4 activerecord custom-validators