Rails 4.2.4에서 4.2.5로 응용 프로그램을 업그레이드 한 후 10 진수 속성에 이상한 문제가 있습니다.4.2.4에서 4.2.5로 업그레이드 한 후 소수점 이하 반올림
소수점 이하의 속성을 가진 클래스가 있습니다. 예를 들어, Salary
클래스는 net_pay
입니다. 나는 그것들이 단지 두 개의 십진법을 가지고 있다는 것을 검증하기 위해 그 속성들에 대한 검증을 가지고있다. 업그레이드 후 해당 돈 속성에 대한 모든 유효성 검사가 실패했습니다 (속성을 2 자리 소수점 이하의 값으로 설정하고 레코드가 유효하지 않은지 확인하려고 시도 함). 콘솔을보고 이상한 행동을 발견했습니다.
Running via Spring preloader in process 18463
Loading development environment (Rails 4.2.5)
irb(main):001:0> salary = Salary.new
=> #<Salary id: nil, net_pay: nil, account_debit: nil, payment_at: nil, comment: nil, attachment: nil, approved_at: nil, status: 0, created_at: nil, updated_at: nil>
irb(main):002:0> salary.net_pay = 123.456789
=> 123.456789
irb(main):003:0> salary.net_pay
=> #<BigDecimal:55b6facd4400,'0.12346E3',18(27)>
irb(main):004:0> salary.net_pay.to_s
=> "123.46"
뭐라고? 내 소수는 어디 갔어?! 알림 0.12346E3
. 나는 4.2.4과 같은 예를 시도하고 여기 결과입니다
Running via Spring preloader in process 18756
Loading development environment (Rails 4.2.4)
irb(main):001:0> salary = Salary.new
=> #<Salary id: nil, net_pay: nil, account_debit: nil, payment_at: nil, comment: nil, attachment: nil, approved_at: nil, status: 0, created_at: nil, updated_at: nil>
irb(main):002:0> salary.net_pay = 123.456789
=> 123.456789
irb(main):003:0> salary.net_pay
=> #<BigDecimal:563cf1cb59d8,'0.123456789E3',18(36)>
irb(main):004:0> salary.net_pay.to_s
=> "123.456789"
왜 레일이 자동으로 4.2.4에서 4.2.5의 진수 속성의 규모를 설정하지 않는 이유는 무엇입니까? (필자는 마이 그 레이션에 scale: 2
를 선언했습니다.)
먼저
업데이트, 내가 직접, 그때는 4.2.5로 업데이트 4.2.7.1으로 업데이트하려고 노력하고 동일한 문제가있어. 나는 레일은 물론 다른 보석을 많이 업데이트 의미 갱신하지만, 레일을 업그레이드하기 전에 모든 보석을 업데이트
-gem 'rails', '4.2.4'
+gem 'rails', '4.2.5'
...
그리고 루비 버전
이 변경되지 않습니다 : 나의Gemfile
에 DIFF :
ruby -v
ruby 2.2.5p319 (2016-04-26 revision 54774) [x86_64-linux]