Hatena::ブログ(Diary)

ちくわプログラマにっき このページをアンテナに追加 RSSフィード

【本を書きました!】iOSプログラミング逆引きリファレンス108

会社の同僚といっしょに本を書きました。

iOSアプリ開発中に遭遇するよくある疑問をレシピ形式でまとめた本です。iOS4の新機能も満載です。iOSアプリ開発のお供にどうぞ!

2005-06-17

[][]MysqlAdapterに動的パッチ

リナザウ上の Rails

customer = Customer.find(100);
customer.name = "hoge"
customer.save

ってなコードを実行したところ、saveのところで「SQLの構文があかんでー」と怒られた(´・ω・`)

調査してみたところ

  • RailsMySQLアダプタは、カラム名をバッククォート(`)でクォートする作りになっている
  • mysqlは識別子のクォートにバッククォート(`)を用いる
  • ザウルス上で動かしているMySQLはバージョンが旧く、バッククォートによるクォートをサポートしていない orz

というのが原因ですた。とりあえず、

# mysql_adapter_nonquote_patch.rb
class ActiveRecord::ConnetionAdapters::MysqlAdapter
  def quote_column_name(name)
    # 既存のコード
    # return "`#{name}`" 

    # クォートしません
    return "#{name}"
  end
end

ってなファイルを作って requireしてやることで動的にパッチを当ててあげることとする。なんだかアレな対応だけど、とりあえず動いたからいいや。