我有一个 RoR + MySQL 设置。在数据库中有一个 Tinyint 字段t。当我从 Rails 读取t的值时,我得到true或false,因为 Rails 将 Tinyint 字段解释为布尔值。到现在为止还挺好。
如何从 Rails 读取这个字段t作为实际整数?
我有一个 RoR + MySQL 设置。在数据库中有一个 Tinyint 字段t。当我从 Rails 读取t的值时,我得到true或false,因为 Rails 将 Tinyint 字段解释为布尔值。到现在为止还挺好。
如何从 Rails 读取这个字段t作为实际整数?
http://apidock.com/rails/ActiveRecord/AttributeMethods/BeforeTypeCast/attributes_before_type_cast
例如:
Model.first.attributes_before_type_cast['your_boolean_field']
这取决于您的数据库将返回什么值,在 postgesql 中它是 'f' 或 't'
以@sumskyi 的响应为基础,如果您始终将此字段作为常规整数访问,您可以覆盖模型的内置方法并避免重复运动伤害:
class GroceryStore < ActiveRecord::Base
# rating is a TINYINT column
# we just redefine the method here to return the value cast how we want it
def rating
self.attributes_before_type_cast['rating'].to_i
end
end
现在,如果你打电话grocerystore.rating
,你会得到一个整数而不是布尔值。