特別な種類の日付形式を使用する Ruby on Rails アプリケーションを開発しています。問題の日付形式は Year.month.day で、日付は次のようになります。
年.月.日 年.月 年
形式をチェックし、入力日付がこれらの形式のいずれかに適合する場合は有効にする必要がある検証方法に取り組んでいます。これまでのところ、私のコードは次のとおりです。
def data_format_correct
regexymd = /[0-9]{4}[.][0-9]{1,2}[.][0-9]{1,2}/
regexym = /[0-9]{4}[.][0-9]{1,2}/
regexy = /[0-9]{4}/
if :data.to_s =~ regexymd
return true
elsif :data.to_s =~ regexym
return true
elsif :data.to_s =~ regexy
return true
else
errors.add(:data)
return
end
終わり
フォームに日付を入力するたびに、else ケースがエラーで発生します。私のコードは正しいと確信しています。何か不足していますか?
編集:
解決策を見つけました。次のように機能します。
regexymd = /^[0-9]{4}[.][0-9]{1,2}[.][0-9]{1,2}$/
regexym = /^[0-9]{4}[.][0-9]{1,2}$/
regexy = /^[0-9]{4}$/
regex_final = Regexp.union(regexymd, regexym)
regex_final = Regexp.union(regex_final, regexy)
validates :data, :format => { :with => regex_final }
私と同じ状況の誰かに役立つことを願っています。回答ありがとうございます。フィードバックに感謝します。