Padrino 애플리케이션의 최신 Ruby로 업그레이드했으며 새 오브젝트를 작성할 때 활성 레코드에 오류가 있습니다. 숫자 (ISBN)를 4 바이트로 검증하고 있습니다. 오류 :유형 Padrino의 bigint에 컬럼 캐스팅 활성 레코드
9781407005416 is out of range for ActiveRecord::Type::Integer with limit 4
가 어떻게 8 바이트 제한을 사용하는 루비 액티브 레코드 클래스를 알 수 있습니까?
마이그레이션을 실행하는 것에 대해 이야기하는 것이 아니며, 테이블은 이미 bigint(20)
입니다.
class Book < ActiveRecord::Base
attribute :isbn, :integer, :limit => 8
end
을 나는 다음 ISBN 필드 find_by
및 as_json
에 오류를 얻을 : #<NoMethodError: undefined method 'type_cast_for_database' for :integer:Symbol
나는 새로운으로 'ISBN'방법을 설정 활성 레코드 어댑터에 의해 작성된 속성의 컬럼을 변경하는 대신 인스턴스 변수를 사용하십시오.
나는 column has a limit을 알고 있지만 열의 유형에 액세스하여 업데이트하는 방법을 모르겠습니다.
유형 설정에 대한 해결책을 찾지 못하면 활성 레코드 ensure_in_range
에서 현재 발생하는 유효성 검사를 건너 뛸 수 있습니다.
DEFAULT_LIMIT = 4
의 class Integer < Value
을 내 앱에서 변경하는 방법이 있습니까? 이것은 following changes in Ruby와 관련이 있지만 Padrino 소스를 변경할 수있는 권한이 없습니다.
어떤 데이터베이스를 사용하고 있습니까? – jpgeek
MySQL, 루비 어댑터 큰 int 캡처 및 그에 따라 제한 조정. – Conor