Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 验证多列的唯一性的正确方法_Ruby On Rails_Validation - Fatal编程技术网

Ruby on rails 验证多列的唯一性的正确方法

Ruby on rails 验证多列的唯一性的正确方法,ruby-on-rails,validation,Ruby On Rails,Validation,假设我在一个表上有一个唯一的索引: add_index :events, [:venue_id, :act_id, :occurs_on], :unique => true 现在,如果我想在模型中验证这一点,我应该这样做: validates_uniqueness_of :venue_id, :scope => [:act_id, :occurs_on] 或者这个: validates_uniqueness_of :venue_id, :scope => [:act_id,

假设我在一个表上有一个唯一的索引:

add_index :events, [:venue_id, :act_id, :occurs_on], :unique => true
现在,如果我想在模型中验证这一点,我应该这样做:

validates_uniqueness_of :venue_id, :scope => [:act_id, :occurs_on]
或者这个:

validates_uniqueness_of :venue_id, :scope => [:act_id, :occurs_on]
validates_uniqueness_of :act_id, :scope => [:venue_id, :occurs_on]
validates_uniqueness_of :occurs_on, :scope => [:venue_id, :act_id]

您的第一个唯一性约束转化为“表中的元组上只能有一个特定的地点id、动作id和发生id”。因此,只需要第一个验证语句。

您的第二个语句相当于“给定一个特定的:动作id和:发生id,地点id应该是唯一的”。换句话说,它实际上没有验证:场馆id的唯一性严格,因为它允许具有相同
:场馆id
的活动,只要其他两列不相同。