Kullanıcıların bir fiyat girebileceği bir form var. Verileri normalleştiren bir before_validation yapmaya çalışıyorum, eğer kullanıcı koyarsa $ değerini keser. kullanıcı girişi 50 $ Bu kod bana 50. verirseKullanıcı girdisini tamsayıya dönüştür
before_validation do
unless self.price.blank? then self.price= self.price.to_s.gsub(/\D/, '').to_i end
end
kullanıcı girişi $ 50 ise bu kod ben veri türü benim before_validation öncesinde .to_i çalışan ve her şeyi kırpma raylar tamsayı olduğundan düşünmek bana 0'a veriyor $ sonra. Aynı kod, veri türü bir dize ise iyi çalışır.
Tamsayı veri türü tutmama izin verecek bir çözüme sahip olan var mı? Eğer @model.price = whatever
yaptığınızda
def price=(val)
write_attribute :price, val.to_s.gsub(/\D/, '').to_i
end
Yani, yerine raylar varsayılan özellik yazar bu yönteme gidecek:
ondalık Benim soluction colum fiyat tipi teşekkür ederiz. Herzaman önce bir validasyon kullanmayı düşündüğüm için oldukça beceriksizdir. Bu kesinlikle daha zarif. –