2010-12-08 1 views
0

レコードの値がヌルのテーブルのすべてのフィールドを更新して、すべてのフィールドを1つずつ書き込まずにvalidate_presence_ofに更新する方法はありますか?特定のフィールドを持つモデルの存在を検証する方法

+0

問題を再現して問題を具体化できますか? – Chirantan

+0

可能であれば、サンプルとサンプルコードを与えることで、もっと詳しく説明します。 – Swanand

答えて

2

デフォルト値はどういう意味ですか?最も簡単な方法は、値が存在するかどうデータベースに

add_column :posts, :excerpt, :text, :default => "No excerpt available" 

validates_presence_ofのみチェックをデフォルト値を設定することです。私はあなたがその目的のために検証を使用することができるとは思わない

before_validation :set_values 

def set_values 
    attributes.each do |attr| 
    self.send("#{attr}=".to_sym, 'Default value') if attr.nil? 
    end 
end 
0

オプションで、before_validationフックを設定することができます。検証は、オブジェクトが何らかの形でデータベースに保存または更新されたときにのみ実行されるので、すでにテーブルに多数のレコードがあり、その後に検証を書き込むと、既存のデータベースレコードにはまったく影響しません。それらを再度更新しようとしない限り。

ただし、1つのデータベースクエリで複数のレコードを更新する場合は、update_allメソッド呼び出しを使用できます。

Record.update_all "value = 'default_value'", "value IS NULL" 
+0

詳しくはhttp://apidock.com/rails/ActiveRecord/Base/update_all/classを参照してください。 – Rohit

関連する問題