我正在为一个项目创建一个facebook克隆,而且我无法阻止为技术上存在的关系创建友谊。
例如,A人向接受B的人发送朋友请求。这创建了一个记录,其中人A =" user_id"和人B =" friend_id"。使用此行阻止人员A在数据库级别向人员B发送另一个朋友请求:
t.index ["user_id", "friend_id"], name: "index_friendships_on_user_id_and_friend_id", unique: true, using: :btree
但是,B人仍然可以向A人发送请求没问题。我尝试用上面的反面来防止这种情况:
t.index ["friend_id", "user_id"], name: "index_friendships_on_friend_id_and_user_id", unique: true, using: :btree
我现在意识到这仍然允许创建一个反向友谊,但不再有DUPLICATE反向关系....
所以,我想我需要编写一个自定义回调(原谅我,如果我在整个错误的术语中),它会在保存记录之前检查数据库是否有重复的友谊,对吗?