问题标签 [validates-uniqueness-of]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
332 浏览

ruby-on-rails - Rails validates_uniqueness_of with 除非对自身进行验证

我正在使用 rails 进行身份验证,并且想要验证用户名的唯一性,除非另一个用户名被设置为临时帐户。

示例:我们设置了一个用户帐户,其名称为:“buddy”,电子邮件为:“placeholder@email.com”

用户来并创建一个帐户。如果唯一的其他好友帐户与电子邮件相关联,我们希望用户能够使用名称“buddy”:“placehoder@gmail.com”。

基本上我想做一些事情:

这样做的正确方法是什么?

0 投票
0 回答
187 浏览

ruby-on-rails - ActiveRecord `unscoped` 从不同的数据库返回模型但具有相同的名称

更新:好吧,所以我调试了 Rails,发现它发生是因为我的两个表都命名相同。

validates_uniquness_of调用unscoped模型的类。unscoped返回遗留表中的所有行。

原始帖子:我正在创建将遗留数据从一个 Rails 应用程序迁移到另一个应用程序(两个数据库都是 Postgresql)。

我的新应用程序validates_uniqueness_of对其中一个模型进行了验证。

正如这里所解释的,我创建了与遗留数据库建立连接的遗留模型类(使用establish_connection :legacy)。在应用程序级迁移期间,我从旧表中复制模型数据,以在我的新应用程序中逐行创建新模型。该过程在第一次创建模型时失败,因为唯一性验证失败(即使新数据库仍然是空的)。

这让我相信validates_uniqueness_of出于某种原因也考虑了遗留数据库。

具有验证的模型表在旧数据库和新数据库中具有相同的名称。

0 投票
1 回答
207 浏览

ruby-on-rails - 仅当匹配现有记录的一个属性不等于特定值时,如何验证_uniqueness_of 的范围为两个属性?

我有一个Invitation模型代表加入订阅的邀请。在任何给定时间应该只有一个Invitation具有特定email/subscription_id组合的记录,除非具有匹配email/的其他记录subscription_id也具有stateof 'declined'

鉴于 email 和 subscription_id 组合是唯一的,我目前可以验证唯一性:

我的Invitation模型:

Rspec(通过):

state但是,如果数据库中的匹配模型的 a等于,我想跳过唯一性检查'declined'

如果现有模型的状态为“已拒绝”,则验证应通过。

首先想到的是:

但这是错误的,因为它检查新创建的模型是否具有“拒绝”状态,我想检查以前存在的记录是否具有'declined'.

我也试过这个:

但这失败了,因为我认为是同样的原因。

我将如何编写检查附加范围的验证?


我想写类似下面的东西,但这只是用来帮助解释我的想法的语法:


更新:

我这样做了,它奏效了:

0 投票
1 回答
550 浏览

ruby-on-rails-4 - validates_uniqueness_of 的 Rspec 测试在应该失败时通过

我对 Rspec 测试相当陌生,这非常令人沮丧。

我有一个模型,它使用validates_uniqueness_of来防止创建重复条目。(我知道这不能保证,首选方法是使用数据库级别的约束,但目前不相关)。

问题是我的 Rspec 测试似乎表明可以在表中创建 2 个具有相同 user_id 和 board_id 的条目,即使在实践中,在控制台和应用程序本身中,这无法完成。

模型/主持人_join.rb

规范/模型/moderator_join_spec.rb

控制台输出

0 投票
1 回答
1554 浏览

ruby-on-rails - rspec mongoid 唯一性验证

我想测试用户模型的唯一性。

我的User模型类看起来像:

我属于模型的 rspec 测试如下所示:

在我执行之后bundle exec rspec,它总是引发下一个错误,而不是成功通过:

如果我使用它,它会成功通过:

我想用expect(...). 有人可以帮帮我吗?

0 投票
1 回答
659 浏览

php - Phalcon PHP:测试自然键的唯一性?

我有一些这样的代码:

这适用于除自然主键之外的所有列。也就是说,不是代理键的主键(自动递增整数)。例如,在 job_titles 表中,自然键列是“job_title”——在我们的例子中,它指的是职位名称。这个名称应该是唯一的,我希望能够在保存之前在代码中检查它。然而,不知何故,Phalcon 很高兴地忽略了它。

我现在实际上正在为此设置一个单元测试并执行类似于以下的操作:

永远不会抛出异常。数据库中的最终结果是带有 Desc A 的第一个唯一测试的单列,而第二个测试没有记录。但我没有抛出异常。

有什么想法吗?

编辑:

此外,我尝试使用 ->create() 函数代替 save() 函数。

0 投票
2 回答
289 浏览

ruby-on-rails - MongoId 组合唯一性索引

我有三个模型

一个人可以在多个 Org 中,但只能在一个 OrgGroup 中。

我需要为组织中的人类设置唯一性索引。

我怎么能做到这一点?

0 投票
1 回答
1443 浏览

ruby-on-rails - Rspec ignores uniqueness validation

I don't want rspec to let me save two objects of the class with the same name, however it does. Is there something I'm missing?

My model:

my test:

this is what I get:

I can even write two times FactoryGirl.create, it just saves.

However if I switch over to rails console and try to create two objects with two identical names, I receive an error. Something wrong with my testing environment?

0 投票
0 回答
271 浏览

ruby-on-rails - 使用 has_many :through 关联和 accept_nested_attributes_for 进行唯一性验证

是否可以在 has_many through: 关联中使用 Accepts_nested_attributes_for 仅在不重复时才创建子代。否则只在连接表中创建关系?

我有一个可以有很多电子邮件的列表。反过来也是可能的。请参阅下面的模型。

这是列表视图_form。

这是有关“更新”的操作和 list_params 方法。

在视图表单中,我可以将新电子邮件添加到列表中。问题是当我尝试添加重复的电子邮件时。验证和保存被拒绝。

在这里,我通过 Rails 控制台插入了一个副本。

错误:

电子邮件名称已被占用

我的目标是:

  • 如果电子邮件名称尚未出现在“电子邮件”中,则在“电子邮件”表中创建一个电子邮件。然后在“emails_lists”中创建电子邮件和列表之间的关系。
  • 如果电子邮件名称重复,则查找重复项并仅在“emails_lists”中创建电子邮件和列表之间的关系。

编辑

我发现这篇文章描述了一个类似的问题: rails validate nested attributes

哈克

我找到了一个自定义黑客来解决我的问题。我认为该解决方案对于其他情况是可移植的。我认为这不是最佳做法,但它似乎适用于添加/删除案例。

0 投票
1 回答
1007 浏览

ruby-on-rails - 每节课验证每个用户的唯一性记录 // Rails 4

问题:我希望每个视频每个用户只有 1 个 UserLesson, 因为我正在构建一个跟踪系统(进度系统)用户应该能够看到剩余的课程/总课程还有多少课,并且当标记为已完成时应该添加 css

我将数据从视图发送到控制器:

控制器接收数据并启动创建方法

这是模型关系

我的猜测是验证每个用户和课程的用户课程的唯一性。但是似乎无法工作得到错误消息。