Nasıl raylar bir tarih doğrulamak mı?
Raylar üzerinde ruby benim modelde bir tarih doğrulamak mümkün olmak istiyorum. Ancak, gün, ay ve yıl değerleri zaten benim model vardıklarında yanlış bir tarih dönüştürülür.
Eğer girersem Modeli yaptığımda benim görüşüme göre, örneğin, Şubat 2009 31.([: model] parametreler) yeni bir kumanda, 3 Mart 2009 dönüştürür. Benim modeli o zaman hangisi geçerli bir tarih olarak görüyor, ama yanlış tarih.
Benim modelde bu doğrulama yapmak istiyorum. Herhangi bir yolu yoktur, ya gidiyorum bu tamamen yanlış mı?
Sorun anlatılır post bunu buldum ama hiçbir zaman bir çözüm vardır.
CEVAP
date_select
yardımcı etiketler oluşturmak için kullandığınız tarih için tahmin ediyorum. Bunu yapabileceğin başka bir yol seçin form Yardımcısı gün, ay, yıl alanları için kullanmaktır. Bu, (kullanılan örnek created_at Tarih Alanı) gibi
<%= f.select :month, (1..12).to_a, selected: @user.created_at.month %>
<%= f.select :day, (1..31).to_a, selected: @user.created_at.day %>
<%= f.select :year, ((Time.now.year - 20)..Time.now.year).to_a, selected: @user.created_at.year %>
Ve model, tarih doğrulamak için:
attr_accessor :month, :day, :year
validate :validate_created_at
private
def convert_created_at
begin
self.created_at = Date.civil(self.year.to_i, self.month.to_i, self.day.to_i)
rescue ArgumentError
false
end
end
def validate_created_at
errors.add("Created at date", "is invalid.") unless convert_created_at
end
Eğer eklenti bir çözüm arıyorsan, validates_timeliness eklenti kontrol ederdim. Bu github sayfasından) gibi çalışır:
class Person < ActiveRecord::Base
validates_date :date_of_birth, on_or_before: lambda { Date.current }
# or
validates :date_of_birth, timeliness: { on_or_before: lambda { Date.current }, type: :date }
end
Doğrulama yöntemleri kullanılabilir listesi aşağıdaki gibidir:
validates_date - validate value as date
validates_time - validate value as time only i.e. '12:20pm'
validates_datetime - validate value as a full date and time
validates - use the :timeliness key and set the type in the hash.
Nasıl bir şey bir boolean olduğunu doğ...
Nasıl 'doğrulamak' raylar üz...
Nasıl Raylar geçiş veritabanında bir s...
Nasıl JavaScript geçerli tarih olsun?...
Nasıl tarih sadece SQL Server datetime...