如何在Rails 3.2.2中关闭tinyint布尔仿真?

时间:2012-04-06 03:07:33

标签: ruby-on-rails-3 activerecord

根据api文档:

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

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

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

uninitialized constant ActiveRecord::ConnectionAdapters::Mysql2Adapter

3 个答案:

答案 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。要求它解决了这个问题。