我已經升級到Padrino應用程序上的最新Ruby,並且在創建新對象時出現活動記錄錯誤。它將驗證一個數字(一個ISBN)爲4個字節。錯誤是:類型在Padrino中將big列投影到bigint Active Record
9781407005416 is out of range for ActiveRecord::Type::Integer with limit 4
如何判斷一個Ruby的活動記錄類使用8個字節的限制?
我不是在談論運行遷移,該表已經是bigint(20)
。
我想下面將工作:
class Book < ActiveRecord::Base
attribute :isbn, :integer, :limit => 8
end
然後我得到find_by
和as_json
爲ISBN字段錯誤:
#<NoMethodError: undefined method 'type_cast_for_database' for :integer:Symbol
我把 '國際標準書號' 方式進入一個新的實例變量,而不是更改活動記錄適配器創建的屬性的列。
我知道column has a limit,但不知道如何訪問列的類型來更新它。
落在類型設置的解決方案有一種方法可以跳過活動記錄ensure_in_range
中現在發生的驗證。
有沒有一種方法可以從我的應用程序中更改內建DEFAULT_LIMIT = 4
的class Integer < Value
?這與following changes in Ruby有關,但我無法更改Padrino源代碼。
您使用的是哪個數據庫? – jpgeek
MySQL,紅寶石適配器沒有捕獲大的int並相應地調整限制。 – Conor