我知道,与添加" uniqueness"相比,通过创建索引进行验证是万无一失的。模型的关键字。
同时具有索引和"唯一性"是否有价值。或者这是个坏主意?
user.rb:
validates :email, uniqueness: true
schema.rb
add_index "users", ["email"], name: "index_users_on_email", unique: true
答案 0 :(得分:2)
是的,两种方法都有一个值,您想要同时使用这两种方法。验证和索引也有不同的用途。
通过向数据库添加索引,首先提高性能,然后确保在非常低的级别(即使有人试图强制复制),您保证拥有唯一数据。它不会退出验证唯一性。如果您尝试插入副本,您的应用将抛出异常。
在验证中添加唯一性意味着如果要保存/更新无效的内容,Rails将捕获并显示错误消息(无异常)。您可以通过使用validate: false
参数保存来跳过Rails验证,但是您永远无法避免数据库级别的唯一性。