2016-05-23 4 views
1

update_sql。私はレール3.2.17を使用しています。主な目的は、列名を小文字に変更することです。私は初期化子でクラス "class ActiveRecord :: ConnectionAdapters :: PostgreSQLAdapter"を定義しようとしましたが、そこからメソッドが呼び出されましたが、私のクラスは他のクラスから拡張されていないため、superを呼び出すことはできません。ActiveRecordのPostgreSQLAdapterオーバーライドsql_for_insert、クエリは、実行され、私は、sql_for_insert、クエリのために生成されたクエリのすべてのSQL文を更新postgresのために実行し、update_sqlたい

答えて

1

1つの場所で列名を更新するだけの代替方法があります。私はモジュールを作成し、それをArel:Attributes:Attributeに含めました。このモジュールは列名を小文字に変換します。このコードはまだ私のためにテスト中であり、生産には向いていません。しかし、これは私の問題を解決したようだった。

module ArelAttributeWrapper 
    def self.included base 
    @actualname = nil 
    base.class_eval do 
     def initialize(*args) 
     super(*args) 
     @actualname = args[1] 
     end 
     def name=(value) 
     @actualname = value.downcase 
     end 

     def name 
     @actualname.downcase 
     end 
    end 
    end 
end 

Arel::Attributes::Attribute.send(:include, ArelAttributeWrapper) 
関連する問題