0

RoR初心者です。validates_uniqueness_of の使用時に問題に直面しています。私は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" 。エラーが発生することを期待していましたが、予期せずレコードを受け入れ、データベースに新しいレコードとして挿入します。

これを解決する方法を教えてください。

4

2 に答える 2

2

ワンライナーソリューションが必要な場合は、これを試してください:

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

うまくいけば、それは役に立ちます。

于 2013-07-21T08:39:24.877 に答える