Rails 4.1 - 在没有类型转换的情况下写入MySQL数据库

Ben*_*ess 9 ruby mysql activerecord ruby-on-rails ruby-on-rails-4.1

我的MySQL数据库中有一个列为TINYINT(1)的列.我需要在这个列中存储实际的整数.问题是,由于列类型,Rails 4.1假定此列仅包含布尔值,因此它在写入数据库时​​将除0或1之外的所有值都转换为0.

我不想简单地禁用布尔仿真,因为我们的数据库中有许多列,我们使用TINYINT(1)来实际表示一个布尔值.我目前无法更改MySQL中的列类型.

如何强制Rails 4.1绕过类型转换步骤并直接写入数据库呢?


(这个来自Rails 4.1源代码的摘录可能有一些用处:https://github.com/rails/rails/blob/4-1-stable/activerecord/lib/active_record/attribute_methods/write.rb)

use*_*119 3

你能使用原始 SQL 来执行插入吗?

就像是:

sql = "INSERT INTO my_table (smallnumber) VALUES (100)"
ActiveRecord::Base.connection.execute(sql)
Run Code Online (Sandbox Code Playgroud)