4

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

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

4

2 回答 2

6

http://apidock.com/rails/ActiveRecord/AttributeMethods/BeforeTypeCast/attributes_before_type_cast

例如:

Model.first.attributes_before_type_cast['your_boolean_field']

这取决于您的数据库将返回什么值,在 postgesql 中它是 'f' 或 't'

于 2012-08-30T13:30:49.060 回答
2

以@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,你会得到一个整数而不是布尔值。

于 2013-02-28T19:56:38.137 回答