- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
标题说明了一切......
我想要一个列的唯一约束,但如果尝试使用该约束创建记录,就会失败。
或者...我应该只使用 first_or_initialize/first_or_create 吗?
最佳答案
first_or_create
/first_or_initialize
适用于当您愿意返回现有记录/实例而不是创建/实例化新记录/实例时。如果那是你想要的行为,那么也许你应该走那条路。
此答案其余部分的简短版本:“您为什么要编写一个随后会被忽略的约束?这听起来很可疑。”
但是既然你说你希望它失败,请考虑以下几点:
如果要保持沉默,约束的意义何在?那会隐藏一个问题,而您不希望那样。您的应用程序/数据库就像是,“嘿,老兄,您告诉我要始终拒绝这种非独特的废话,但现在您改变了主意?”您使用这些失败使您的数据保持有效并将错误传递回用户,以便他们可以纠正错误。
如果你只需要在某些情况下强制唯一性,但在其他情况下避免它是可以的(这会很奇怪,但我听说过更奇怪的事情)那么你需要认真考虑那段代码的设计。如果您能明确地说,“这应该始终是独一无二的,或者从不关心是独一无二的,那绝对是最好的 - 一个或另一个。” 如果那是你所需要的,那么你必须在数据库级别删除任何唯一性约束(因为你不能有条件地忽略它们)并使其成为 Rails 模型级别的条件约束。但是,如果您走这条路,请非常小心。一旦您的表中有非唯一数据,您将无法在需要时轻松返回,并且您可能会将 future 的自己描绘成无效数据的可怕角落。
如果唯一性约束因非用户提供的数据而失败(即您在应用程序中创建完全独立于任何类型的用户输入的记录)那么您的代码中存在错误 并且应该解决这个问题,因为您应该能够 100% 地防止自己代码中的唯一性约束错误。
如果这是暂时的,也许您正在基于损坏/有错误的第 3 方数据源创建记录,但您现在无法修复它或无法控制它,但您需要你的应用程序继续工作,那么如果你问一个关于你的情况的更具体的问题可能会有所帮助,因为临时解决方法是他们自己的一个类别。有些是经过精心设计的解决方法或补丁,而另一些则往往会变成可怕的黑客攻击,这将花费您的维护时间。
关于ruby-on-rails - 我可以让 validates_uniqueness_of 在 rails 中默默地失败吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23377402/
我有模型: class Action include Mongoid::Document field :name, type: String field :assignment_date,
我的 ActiveRecord 模型中有一个 validate_uniqueness_of :field。当我进行单个创建/更新时,它运行良好,但我必须从事务中的 csv 文件进行一些大批量创建 当我
什么是正确的写法? validates_uniqueness_of :a, :scope => [:b, :c], :unless => !d.nil? 最佳答案 很简单: validates_uni
将 Validates_uniqueness_of 与 :scope 选项一起使用时,传递这样的列数组是否有效: validates_uniqueness_of :x, :scope => [:y,
我有一个包含两个字段的模型,我将其称为 first_name 和 last_name,并且我想确保这两个字段的组合不区分大小写是唯一的。通过使用这个,我已经成功了一半: validates_uniqu
这是模型(我使用的是 SQLLite3): class School false 可以解决问题,但您应该记住 validates_uniqueness_of 并不能保证唯一性,如果您有多个服务器/服
尝试在 Rails 3 中制作一个简单的应用程序。 如果我使用 rails g scaffold team name:string && rake db:migrate 创建团队模型,然后运行 r
我对我的模型进行了 validates_uniqueness_of 验证: #SwimMeetRelayEvent.rb validates_uniqueness_of :event_number_d
我有以下代码: class Like [:site_id] end 这限制了一个人基于远程 ip 请求多次“喜欢”一个站点。本质上,当有人“喜欢”一个站点时,会在 Likes 表中创建一条记录,我使
首先,谁能解释一下唯一索引在数据库中的工作原理? 假设我有一个带有 name column 的用户模型然后我添加一个 unique index在它上面但在模型(user.rb)中我只有一个presen
如何做到这一点?在线找不到任何示例...(使用 rspec 2.5.0 和 rails 3.0.5 ) 最佳答案 在 shoulda-matchers 中找到它:http://rubydoc.info
我有一个模型使用“事件”标志来软删除项目而不是销毁它们。该模型具有“名称”属性,该属性在事件项目中必须是唯一的。我试图将 conditions 修饰符与 validates_uniqueness_of
我有一个模型“产品”,属于“商店”(其中有很多“产品”)。我想验证产品名称的唯一性,但仅限于每个商店内。 现在我有这个: class Product :store_id end 当我对任何产品运行保
我有一个基本的 Rails 模型,它有两个属性,name 和 code。我为 code 属性设置了 validates_uniqueness_of。但是,我想自定义 :message 以显示副本的名称
我正在尝试在无法通过的模型上测试唯一性验证。我对另一个通过的模型进行了相同的验证测试,但我不明白我在这方面遗漏了什么。 我已经在论坛上搜索并尝试了一些东西,但仍然没有通过。我敢肯定这里有一些小而重要的
标题说明了一切...... 我想要一个列的唯一约束,但如果尝试使用该约束创建记录,就会失败。 或者...我应该只使用 first_or_initialize/first_or_create 吗? 最佳
The uniqueness validator of ActiveRecord如果值为 nil 或空白,则可以选择跳过验证。即使我将两个参数设置为 true(默认行为),我也可以在验证命中之前创建一
我有一个使用条件定义的唯一约束。但是下面的测试没有通过: class Dummy include Mongoid::Document field :name, :type => String
尝试编写一个测试来验证 :user_id 与范围 :board_id 的唯一性。 模型: class Membership < ApplicationRecord belongs_to :boar
我有一个简单的大写方法,这样当用户在乐队页面中提交一个新乐队时,它会将第一个字母大写。在我的 Band 类中,我还有一个 validates_uniqueness_of :band_name 来查看是
我是一名优秀的程序员,十分优秀!