Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql Rails:从tinyint读取整数_Mysql_Ruby On Rails_Ruby_Database_Ruby On Rails 3 - Fatal编程技术网

Mysql Rails:从tinyint读取整数

Mysql Rails:从tinyint读取整数,mysql,ruby-on-rails,ruby,database,ruby-on-rails-3,Mysql,Ruby On Rails,Ruby,Database,Ruby On Rails 3,我有一个RoR+MySQL设置。在数据库中有一个Tinyint字段t。当我从Rails读取t的值时,我得到true或false,因为Tinyint字段被Rails解释为布尔值。到目前为止还不错 如何从Rails中将这个字段t作为实际整数读取 例如: Model.first.attributes_before_type_cast['your_boolean_field'] 这取决于您的DB将返回什么值,在postgesql中,根据@sumskyi的响应构建是“f”或“t”,如果您始终以常规整数访

我有一个RoR+MySQL设置。在数据库中有一个Tinyint字段t。当我从Rails读取t的值时,我得到true或false,因为Tinyint字段被Rails解释为布尔值。到目前为止还不错

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

例如:

Model.first.attributes_before_type_cast['your_boolean_field']

这取决于您的DB将返回什么值,在postgesql中,根据@sumskyi的响应构建是“f”或“t”

,如果您始终以常规整数访问此字段,您可以覆盖模型的内置方法,并保存自己的重复运动损伤:

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,您将得到一个整数,而不是布尔值。

请显示用于将其作为布尔值读取的代码;我很惊讶,你不能像它毕竟是一个1字节的整数列那样,将它作为一个整数来读取。我不知道在Ruby中是否有更好的方法,但最坏的情况下,您可以尝试选择ConvertTinIntColumn,[UN]从my_表中签名?我只使用一个标准的Model.find_by_id来获取记录。找到了一些更有用的信息:通过在config/application.rb中设置ActiveRecord::ConnectionAdapters::Mysql2Adapter.emulate_booleans=false,可以完全禁用布尔解释。但是,他们没有提到您还必须在application.rb中显式地需要active_record/connection_adapters/mysql2_adapter,所以请确保不要错过这一点!请参阅。如果您只需要一个字段,您也可以使用read\u attribute\u before\u type\u cast“your\u boolean\u field”方法,甚至您的\u boolean\u field\u before\u type\u cast.read\u attribute\u before\u type\u cast对我不起作用,你可以看看我是怎么解决的。