1

根据 api 文档:

如果您希望禁用此仿真(这是 0.13.1 及更早版本中的默认行为),您可以将以下行添加到您的 application.rb 文件中:

ActiveRecord::ConnectionAdapters::Mysql[2]Adapter.emulate_booleans = false

但是当我这样做时,我得到:

uninitialized constant ActiveRecord::ConnectionAdapters::Mysql2Adapter
4

3 回答 3

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
于 2012-06-11T05:42:17.837 回答
4

我有同样的问题,我认为你有。但在我的情况下,我不想关闭 tinyint 模拟,而只是将遗留数据库的一些 tinyint 列设置为整数类型而不是布尔类型。搜索,我找到了解决问题的方法。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

于 2015-07-13T23:02:41.153 回答
-1

文档不要求您在 application.rb 中要求 activerecord。要求它解决了这个问题。

于 2012-05-02T01:56:38.997 回答