Rails:从tinyint读取整数

时间:2012-08-30 13:08:04

标签: mysql ruby-on-rails ruby database ruby-on-rails-3

我有一个RoR + MySQL设置。在数据库中有一个Tinyint字段 t 。当我从Rails读取 t 的值时,我得到 true false ,因为Tailsint字段被Rails解释为boolean。到现在为止还挺好。

如何从Rails读取此字段 t 作为实际整数?

2 个答案:

答案 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,你将获得一个整数而不是一个布尔值。