2012-04-06 4 views
1

sich nach den API-Dokumentation:Wie schalte ich die boolesche tinyint-Emulation in Rails 3.2.2 aus?

Wenn Sie diese Emulation deaktivieren möchten (die das Standardverhalten in den Versionen 0.13.1 und früher war) können Sie die folgende Zeile in application.rb Datei hinzufügen:

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

Aber wenn ich so tun, erhalte ich:

uninitialized constant ActiveRecord::ConnectionAdapters::Mysql2Adapter 
+1

wilde Vermutung: wahrscheinlich, dass Sie es in einigen falschen Stelle setzen, weil AR ist wahrscheinlich nicht erforderlich gewesen, die Zeit. – Zabba

+0

Ich setze es genau in die Datei, um die mich die Dokumentation bittet. –

+0

zeigen Sie Ihre 'application.rb' – MikDiet

Antwort

-1

Die docs Sie nicht fragen active~~POS=TRUNC in application.rb zu verlangen. Die Anforderung löste das Problem.

4

Für jemanden dieses Thema später zu sehen, musste ich mysql2_adapter mit voller Pfad in Rails 3.2.0;

module MyApp 
    class Application < Rails::Application 
    require 'active_record/connection_adapters/mysql2_adapter' 
    ActiveRecord::ConnectionAdapters::Mysql2Adapter.emulate_booleans = false 
    end 
end 
1

Ich hatte das gleiche Problem, das ich denke, dass Sie hatten. Aber in meinem Fall wollte ich die Tinyint-Emulation nicht ausschalten, sondern nur einige Tinyint-Spalten einer Legacy-Datenbank als Integer-Typ und nicht als Boolean-Typ setzen. Suche, fand ich eine Lösung für mein Problem. Matt Jones ¹ zeigte die Rails Code documentation² erklärt, wie man:

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

Verwandte Themen