2016-05-25 4 views
0

これを行うにはより良い方法がありますか?この問題を解決する別の方法を探していますこの方法を改善するには

def validate_work_dates 
    if ld_work_start_date.present? && off_work_date.present? 
     if ld_work_start_date > off_work_date 
     self.errors.add(:base, "Work start date can't be greater than off work date") and return false 
     end 
    elsif ld_work_start_date.present? && !off_work_date.present? 
     self.errors.add(:base, "Off work date can't be blanck") and return false 
    elsif off_work_date.present? && !ld_work_start_date.present? 
     self.errors.add(:base, "Work start date cant't be clanck") and return false 
    end 
    end 
+0

「ld_work_start_date」と「off_work_date」は何ですか? –

答えて

1

開始日と終了日には、レールプレゼンスバリデーターを使用できます。

validates :ld_work_start_date, presence: true 
validates :off_work_date, presence: true 

次に、開始日を終了日の前にチェックするために独自の検証方法を使用します。

validate :start_date_before_end_date, if: Proc.new{|x| x.ld_work_start_date.present? && off_work_date.present? } 

def start_date_before_end_date 
    if ld_work_start_date > off_work_date 
    errors.add(:base, "Work start date can't be greater than off work date") 
    end 
end 
関連する問題