में कनवर्ट करें तो मेरे पास एक ऐसा फॉर्म है जहां उपयोगकर्ता मूल्य इनपुट कर सकते हैं। मैं पहले_विधीकरण करने की कोशिश कर रहा हूं जो डेटा को सामान्य करता है, अगर उपयोगकर्ता इसे डालता है तो $ क्लिपिंग करता है।उपयोगकर्ता इनपुट को पूर्णांक
before_validation do
unless self.price.blank? then self.price= self.price.to_s.gsub(/\D/, '').to_i end
end
तो उपयोगकर्ता इनपुट $ 50 इस कोड को उपयोगकर्ता इनपुट $ 50 के लिए इस कोड मुझे 50. देता है मुझे 0. दे रहा है मुझे लगता है कि जब से डेटा प्रकार पूर्णांक कि रेल मेरी before_validation से पहले .to_i चल रहा है और सब कुछ कतरन है $ के बाद। डेटा प्रकार एक स्ट्रिंग है तो यह वही कोड ठीक काम करता है।
किसी को भी एक समाधान मुझे पूर्णांक डेटाप्रकार रखने देंगे है?
def price=(val)
write_attribute :price, val.to_s.gsub(/\D/, '').to_i
end
तो जब आप @model.price = whatever
करते हैं, यह पटरियों डिफ़ॉल्ट विशेषता लेखक के बजाय इस विधि के लिए जाना जाएगा:
धन्यवाद। मैंने हमेशा सोचा था कि पहले_विधीकरण का उपयोग करना बहुत बेकार है। यह निश्चित रूप से अधिक सुरुचिपूर्ण है। –