0

2つの日付(開始日と終了日)を比較するカスタムバリデータを追加する必要があります。私はclient_side_validationsのカスタムバリデータ

class MilestoneDatesValidator < ActiveModel::EachValidator 
    def validate_each(record, attribute, value) 
    if record.start_date > record.end_date 
     record.errors.add(attribute, :end_date_less, options.merge(:value => value)) 
    end 
    end 
end 

カスタムバリデータを作成したと私はClientSideValidationsカスタムバリデータを作成し 。私はそれで別の属性値を取得することができますどのように確認されませんでしたが、私は、このような方法でこれを実行しようとしました:

ClientSideValidations.validators.local['milestone_dates'] = function(element, options) { 
    start_date = new Date($('#milestone_start_date').val()); 
    end_date = new Date($('#milestone_end_date').val()); 
    if(end_date < start_date) { 
    return options.message; 
    } 
} 

しかし、それは動作しません/私はページをリロードした後ではなくて、エラーを持っていますクライアント側の検証。 私はclient_side_validations(3.2.0.beta3)、client_side_validations-formtastic(2.0.0.β3)、レール(3.2.3)を使用します。

答えて

1

上記のコードには、バリデータヘルパーメソッドの使用)あなたは検証する

module ActiveModel::Validations::HelperMethods 
    def validates_milestone_dates(*attr_names) 
    validates_with MilestoneDatesValidator, _merge_attributes(attr_names) 
    end 
end 

し、モデル内の属性/ sの上のバリデータを呼び出す:ファイルの最後に以下を追加しmilestone_dates_validator.rb初期化子トライで

validates_milestone_dates :milestone_ends_at 
関連する問題