Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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 Rails 3以一种意想不到的方式验证作品的唯一性_Ruby On Rails - Fatal编程技术网

Ruby on rails Rails 3以一种意想不到的方式验证作品的唯一性

Ruby on rails Rails 3以一种意想不到的方式验证作品的唯一性,ruby-on-rails,Ruby On Rails,我是新来的罗。我在使用validates\u university\u时遇到了一个问题。我有一个包含3列的表: name || father_name || dob Vimal Raj || Selvam || 1985-08-30 我的模型中有这样一个代码: class Candidate < ActiveRecord::Base attr_accessible :dob, :father_name, :name validates_uniqueness

我是新来的罗。我在使用validates\u university\u时遇到了一个问题。我有一个包含3列的表:

name      || father_name || dob
Vimal Raj || Selvam      || 1985-08-30
我的模型中有这样一个代码:

class Candidate < ActiveRecord::Base
   attr_accessible :dob, :father_name, :name
   validates_uniqueness_of :name, scope: [:father_name, :dob], case_sensitive: false,
                           message: ": %{value} already present in the database!!!"
   before_save :capitalize_name, :capitalize_father_name

   private

   def capitalize_name
      self.name.capitalize!
   end

   def capitalize_father_name
      self.father_name.capitalize!
   end
end
候选类
当我插入=>“vimal raj,Selvam,1985-08-30”时,它抛出了预期的错误 但它接受了以下数据=>“Vimal Raj,selvam,1985-08-30”。我原以为它会抛出一个错误,但没想到它会接受该记录并将其作为新记录插入数据库


请帮助我解决这个问题。

我认为区分大小写只与姓名匹配,而与父亲姓名不匹配。我会尝试将“保存前”更改为“验证前”,以便在评估验证时,名称和父名称的大小写保持一致。

我认为区分大小写仅在名称上匹配,而不是在父名称上匹配。我会尝试将“保存前”更改为“验证前”,以便在评估验证时,名称和父名称的大小写保持一致。

如果需要一行解决方案,请尝试以下操作:

before_validation lambda {self.name.capitalize!; self.father_name.capitalize!}

希望,这会有所帮助。

如果您想要单行解决方案,请尝试以下方法:

before_validation lambda {self.name.capitalize!; self.father_name.capitalize!}

希望,这会有所帮助。

无论发生什么情况,作用域似乎都区分大小写-不区分大小写似乎只影响
:name
的唯一性问题,而不影响范围。我不确定我是否会称之为惊喜,但如果有办法做到这一点,那就太好了。请先编辑您的问题,在上面您写道,您的表中有字段名、名字和dob,而不是父亲名。我很抱歉。我已经编辑了我的问题。无论发生什么情况,范围似乎都区分大小写-不区分大小写似乎只影响
:name
的唯一性问题,而不影响范围。我不确定我是否会称之为惊喜,但如果有办法做到这一点,那就太好了。请先编辑您的问题,在上面您写道,您的表中有字段名、名字和dob,而不是父亲名。我很抱歉。我已经编辑了我的问题,效果很好。谢谢Rails,伙计,工作很有魅力。谢谢你,伙计。