MysqlAdapterに動的パッチ
customer = Customer.find(100); customer.name = "hoge" customer.save
ってなコードを実行したところ、saveのところで「SQLの構文があかんでー」と怒られた(´・ω・`)
調査してみたところ
- RailsのMySQLアダプタは、カラム名をバッククォート(`)でクォートする作りになっている
- mysqlは識別子のクォートにバッククォート(`)を用いる
- ザウルス上で動かしているMySQLはバージョンが旧く、バッククォートによるクォートをサポートしていない orz
というのが原因ですた。とりあえず、
# mysql_adapter_nonquote_patch.rb class ActiveRecord::ConnetionAdapters::MysqlAdapter def quote_column_name(name) # 既存のコード # return "`#{name}`" # クォートしません return "#{name}" end end
ってなファイルを作って requireしてやることで動的にパッチを当ててあげることとする。なんだかアレな対応だけど、とりあえず動いたからいいや。