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 でアクティブレコードを要求するように求められていません。それを要求することで問題は解決しました。

于 2012-05-02T01:56:38.997 に答える