根据api文档:
如果您希望禁用此仿真(这是0.13.1及更早版本中的默认行为),您可以将以下行添加到application.rb文件中:
ActiveRecord::ConnectionAdapters::Mysql[2]Adapter.emulate_booleans = false
但是当我这样做时,我得到了:
uninitialized constant ActiveRecord::ConnectionAdapters::Mysql2Adapter
答案 0 :(得分:4)
有人稍后会看到这个主题,我需要在 Rails 3.2.0 中要求mysql2_adapter带完整路径;
module MyApp
class Application < Rails::Application
require 'active_record/connection_adapters/mysql2_adapter'
ActiveRecord::ConnectionAdapters::Mysql2Adapter.emulate_booleans = false
end
end
答案 1 :(得分:2)
我有同样的问题,我认为你有。 但在我的情况下,我不想关闭tinyint模拟但只将遗留数据库的一些tinyint列设置为Integer类型而不是布尔类型。 搜索,我找到了解决问题的方法。 Matt Jones ¹展示了Rails代码文档²,解释了如何:
class SomeModel < ActiveRecord::Base
attribute :a_tinyint_1_column_that_isnt_a_boolean, Type::Integer.new
end
¹https://www.ruby-forum.com/topic/201859
²https://github.com/rails/rails/blob/daffea59db118fce4247d335eabea026cc54d7bc/activerecord/lib/active_record/attributes.rb#L17
答案 2 :(得分:-1)
文档不要求您在application.rb中要求activerecord。要求它解决了这个问题。