2010-09-22 18 views

cevap

14

:

Bazen sütun belirlenmiş kalıplaştığı ilk olarak seyrini kalmadan ham nitelik verilerini okumak için mümkün istiyorum. Bu, tüm özelliklerin sahip olduğu <attribute>_before_type_cast erişim sağlayıcılarını kullanarak tarafından yapılabilir. Örneğin, Account modeliniz bir denge özelliğine sahipse, account.balance_before_type_cast veya account.id_before_type_cast'u arayabilirsiniz.

Bu kullanıcı bir tamsayı alan için bir dize kaynağı olabilir doğrulama durumlarda özellikle yararlıdır ve geri bir hata mesajında ​​ orijinal dize görüntülemek istiyor. özniteliğine erişme normal olarak dizgiyi 0'a yazacaktır, bu sizin istediğiniz gibi değildir.

+0

Fyi, eğer görüşlerinde garip doğrulama mesajları almadan bunu yapmak istiyorsanız. Örneğin. "," type "yazmadan önce," # {attribute} _before_type_cast "yerine" özel bir validator "(http://guides.rubyonrails.org/active_record_validations_callbacks.html#custom-validators) oluşturabilirsiniz. sadece özniteliği kontrol etmek. – Ajedi32

+0

@ Ajedi32 Ya da: geçerlilik için mesaj seçeneği? – sheerun

+2

@sheerun Hayır, ileti seçeneği, doğrulama hatası ile ilişkilendirilen özniteliği değiştirmediğinden çalışmaz. (Örn. " yazımında, yazı tipi bir sayı olmalıdır" ifadesinde, bu seçeneği yalnızca iletinin "bir sayı olmalıdır" kısmını değiştirmek için kullanabilirsiniz.) – Ajedi32

1

validate types in rails'a yardımcı olmak için yeni bir taş oluşturuldu.

explanatory blog post, ilk olarak oluşturulduğu "neden" in daha fazlasını yanıtlamak için vardır.

Bu kütüphane sayesinde sizin kod olabilir: Bir kayan dışında herhangi bir şey sessizce BigDecimal için value döküm ve onu kurtarmak yerine value atandığında

class SomeObject < ActiveRecord::Base 
    validates_type :value, :big_decimal 
end 

Bu bir özel durum oluşturur.

İlgili konular