Tag: validation 唯一性

具有validation的预留类型系统 – Rails 3.0

尝试“validation”对象日期的唯一性的最佳方法是什么。 – 例如,我有一个房间,一次只能有一个人。 用户可以提前预订此房间。 目前,客房从3月1日至3月5日预订。 我想阻止任何人在这些日期再次预订。 因此,如果有人试图从2月25日到3月2日预订房间,我需要告诉他们他们不能,因为房间已满。 – 我正在使用Rails 3.0

Rails唯一性约束和匹配空列的db唯一索引

我的迁移文件中有以下内容 def self.up create_table :payment_agreements do |t| t.boolean :automatic, :default => true, :null => false t.string :payment_trigger_on_order t.references :supplier t.references :seller t.references :product t.timestamps end end 我想确保如果指定了product_id它是唯一的但我也想允许null所以我在我的模型中有以下内容: validates :product_id, :uniqueness => true, :allow_nil => true 工作得很好,但我应该为迁移文件添加一个索引 add_index :payment_agreements, :product_id, :unique => true 显然,当为product_id插入两个空值时,这将抛出exception。 我可以简单地省略迁移中的索引,但是我有可能得到两个PaymentAgreements,其中包含相同的product_id: 并发性和完整性 我的问题是处理这个问题的最佳/最常用方法是什么

Rails validates_uniqueness_of跨多个列,不区分大小写

我有一个有两个字段的模型,我将其称为first_name和last_name,我想确保两者的组合不区分大小写。 我已经在那里使用了这个: validates_uniqueness_of :first_name, :scope => :last_name 问题是,唯一性检查似乎区分大小写,即使文档说默认情况下它应该不区分大小写。 所以给出一个现有记录: { :first_name => ‘John’, :last_name => ‘Smith’ } 这将是允许的: { :first_name => ‘JOHN’, :last_name => ‘SMITH’ } 以及在名字或姓氏中有任何案例变异的任何其他记录。 为什么允许这些记录? 如何在两个字段中一起强制使用不区分大小写的唯一性?

Rails 3:嵌套fields_for的唯一性validation

A有两个型号,“商店”和“产品”,通过has_many:through链接。 在商店表单中有多个产品的嵌套属性,我在产品的唯一性validation方面遇到了一些麻烦。 如果我输入产品,保存它,然后尝试为新产品输入相同的名称,则唯一性validation会成功触发。 但是,如果我在同一嵌套表单的两行中输入相同的产品名称,则表单被接受 – 唯一性validation不会触发。 我猜这是一个相当普遍的问题,但我找不到任何简单的解决方案。 任何人都有最简单的方法建议,以确保在同一嵌套表格中遵守唯一性validation? 编辑:产品型号包括在下面 class Product :shop_products validates_presence_of :name validates_uniqueness_of :name end

Rails仅在有条件时才validation唯一性

我有一个问题类: class Question :user_id end 给定用户每天只能创建一个问题,因此我希望通过唯一索引强制数据库中的唯一性,并通过validates_uniqueness_of强制使用Question类。 我遇到的麻烦是我只想要非管理员用户的约束。 因此,管理员可以根据需要每天创建尽可能多的问题。 关于如何优雅地实现这一点的任何想法?

已销毁的嵌套模型轨道中的validates_uniqueness_of

我有一个Project模型,它接受Task的嵌套属性。 class Project :true end class Task < ActiveRecord::Base validates_uniqueness_of :name end 任务模型中的唯一性validation在更新Project时会出现问题。 在编辑项目时,我删除任务T1,然后添加一个同名T1的新任务,唯一性validation限制了项目的保存。 params hash看起来像 task_attributes => { {“id” => “1”,”name” => “T1”, “_destroy” => “1”},{“name” => “T1”}} 在销毁旧任务之前完成对任务的validation。 因此validation失败。任何想法如何validation它不会认为任务被销毁?