ruby-on-rails - Rails:了解唯一性范围?
问题描述
这可能是一个愚蠢的问题,但我想确保我了解具有唯一性模型约束的“范围”字段。
我正在按照本指南进行操作:https ://dankim.io/mutual-friendship-rails/以了解在 Rails 中处理“朋友”关联。一方面,它谈到了制定唯一性约束:
validates :friend, presence: true, uniqueness: { scope: :user }
(这在friendship
模型中。
所以这是说该friend_id
字段不应该与同一user_id
字段重复,对吗?
这不也可以作为:
validates :user, presence: true, uniqueness: { scope: :friend }
说用户不应该多次user_id
出现重复的friend_id
. 还是我误解了scope
这里的工作原理?
谢谢!
解决方案
你说的对。范围是一种奇特的说法,只允许一个双重(用户,朋友)。
如果您在数据库上设置索引(这是避免具有唯一性验证的竞争条件所必需的),您将执行完全相同的操作:
add_index :friendships, [:user_id, :friend_id], unique: true
推荐阅读
- git - 在 Git 中查看 1 个特定隐藏文件的差异内容
- sql - 用于将数据库表中的值转换为唯一值的 SQL / PLSQL 脚本
- node.js - Puppeteer - 元素没有出现在屏幕上
- reactjs - 如何修复 react 和 spring web 应用程序中的 cors 错误?
- angular - 在具有按钮的标题上设置条件(禁用/显示按钮)[Angular]
- python - 通过 Python 将非结构化数据与特定的值列表匹配
- angular - Angular - 所需数据未显示在页面上,但显示在控制台中
- html - 不同的电话号码在不同位置的不同浏览器上填充,尽管它是一个静态段落标签
- asp.net-mvc - asp.net MVC 中的 Property 和 HasRequired 关键字是什么?
- android-studio - Android Studio 的矢量资产“物理”位于何处