我已经升级到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