我有一个RoR + MySQL设置。在数据库中有一个Tinyint字段 t 。当我从Rails读取 t 的值时,我得到 true 或 false ,因为Tailsint字段被Rails解释为boolean。到现在为止还挺好。
如何从Rails读取此字段 t 作为实际整数?
答案 0 :(得分:5)
http://apidock.com/rails/ActiveRecord/AttributeMethods/BeforeTypeCast/attributes_before_type_cast
例如:
Model.first.attributes_before_type_cast['your_boolean_field']
这取决于你的数据库将返回什么值,在postgesql中它是' f'或者'
答案 1 :(得分:1)
要建立@ 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
,你将获得一个整数而不是一个布尔值。