gpt4 book ai didi

ruby-on-rails - rails : validate unique friendship relationships

转载 作者:行者123 更新时间:2023-12-05 04:16:07 25 4
gpt4 key购买 nike

我正在关注 http://railscasts.com/episodes/163-self-referential-association做一个友谊系统。

#Friendship model
id | user_id | friend_id

问题是

  1. 如何使 user_idfriend_id 的组合唯一?防止从 user_id = 2.friend_id = 1

  2. 创建 user_id = 1, friend_id = 2
  3. 我觉得这个模型设计真的很糟糕。我可以对其建模以实际存储 2 个 ID 的组合吗?喜欢friendship_id_combination = [1, 2],然后验证它。

最佳答案

您可以使用以下内容:

validate :users_are_not_already_friends

def users_are_not_already_friends
combinations = ["user_id = #{user_id} AND friend_id = #{friend_id}",
"user_id = #{friend_id} AND friend_id = #{user_id}"]
if User.where(combinations.join(' OR ')).exists?
self.errors.add(:user_id, 'Already friends!')
end
end

2019 年更新:

修改建议:

def users_are_not_already_friends
if User.where(user_id: friend_id, friend_id: user_id).exist?
|| User.where(user_id: user_id, friend_id: friend_id).exist?
self.errors.add(:user_id, 'Already friends!')
end
end

我强烈建议添加一个基于复合 user_idfriend_id 的数据库约束(唯一索引):

CREATE UNIQUE INDEX users_user_id_friend_id_key ON users (user_id, friend_id);

关于ruby-on-rails - rails : validate unique friendship relationships,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29123620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com