Google지도 지오 코더로 위도와 경도를 자동으로 사용하는 앱이 있습니다. 다른 필드 유효성 검사와 결합하도록 사용자 정의 유효성 검사를 작성하려고합니다. 다음은 내 코드입니다 : 내 Post
형태에서문자열이 float인지 확인하십시오. 0.0
# lib/ext/string.rb
class String
def valid_float?
# The double negation turns this into an actual boolean true - if you're
# okay with "truthy" values (like 0.0), you can remove it.
!!Float(self) rescue false
end
end
# config/application.rb
require 'ext/string'
# post.rb
validate :check_point
def check_point
if !(lat || lng).valid_float?
...
end
end
, 내가 :lat
필드 asdf
를 입력 불을 지르고를 사용, 그것은 valid_float?
방법을 찾을 수 없다는 오류를 반환했습니다.
나는 다음 몇 가지 디버깅을 시도 :
abort(lat.to_s.valid_float?) # 0.0 true
내가 그것을 to_s
때 0.0
될 것 :lat
필드에 입력 한 숫자 이외의 문자처럼 보인다. 그러나 to_s
은 valid_float?
을 작동시키는 유일한 방법입니다. to_s
이 모든 텍스트를 0.0
으로 변환하는 이유는 무엇입니까? 이
"1.234234".valid_float? # true
"asdf".valid_float? # false
"0.0".valid_float? # true
내가해야 할 작업하려면 :
는 또한 테스트에 rails c
을 했습니까? 감사.
최신 디자인과 LNG 필드는 포스트 모델의 필드입니다? 유형이 부동 (float)하면 Rails는 값을 할당 할 때 해당 유형을 변환합니다. – zoli
예, 유형이 부동입니다. 그래서 모든 캐릭터가 플로트로 변환되는 이유는 무엇입니까? – Victor
아마도. 값을 지정하기 전에 컨트롤러에서 양식 입력의 유효성을 검사 할 수 있습니다. 데이터 유형을 String으로 변경하고 값을 Float으로 가져 오는 메소드를 제공하십시오. 또는 입력을 확인하기 위해 lat = 및 lng = 메소드를 변경하십시오. – zoli