그래서 사용자가 가격을 입력 할 수있는 양식이 있습니다. 나는 데이터를 정규화하는 before_validation을 만들려고하는데, 사용자가 넣으면 $가 클리핑됩니다. 사용자 입력은 50 $이 코드는 나에게 (50)를 제공하는 경우사용자 입력을 정수로 변환
before_validation do
unless self.price.blank? then self.price= self.price.to_s.gsub(/\D/, '').to_i end
end
사용자 입력 $ 50 경우이 코드는 내가 데이터 유형 내 before_validation 이전 .to_i 실행하고 모든 클리핑되는 레일의 정수이기 때문에 생각 날 0을주고있다 $ 후. 데이터 형식이 문자열 인 경우이 동일한 코드가 제대로 작동합니다.
누구나 정수 데이터 유형을 유지할 수있는 해결책이 있습니까? 당신이 @model.price = whatever
을 수행 할 때
def price=(val)
write_attribute :price, val.to_s.gsub(/\D/, '').to_i
end
그래서, 대신 레일의 기본 속성 작가의이 방법으로 이동합니다
감사합니다. 나는 항상 before_validation을 사용하는 것이 꽤 어색하다고 생각했다. 이것은 확실히 더 우아합니다. –