Home > All > findメソッドの動作の違い

findメソッドの動作の違い

February 9th, 2009 Leave a comment Go to comments

今日ふとしたことで気付いたのですが、CentOS5とUbuntu8.10でrailsのfindの戻り値が違ってて困りました
フィールド名に予約語使ってしまった自分が悪いっちゃ悪いんだけど…
今回、Sqlite3DBでfromというフィールドのあるテーブルを操作しようとしました
当然fromはSELECT * FROM table WHERE ~とかで使いますのでそのままではいけません
windowsとCentOSでは`from`とすることで大丈夫だったのですが、Ubuntuではなぜかエラー;
Railsで返ってきたオブジェクトをto_xmlすると…

# コントローラ
statuses = Status.find_by_sql('SELECT DISTINCT `from` FROM WHERE~')
render :text => statuses.to_xml

これで表示されるXMLは

<?xml version="1.0" encoding="utf-8"?>
  <statuses type="array">
    <status>
      <`from` class="NilClass">~</`from`>
    </status>
    ...
  </statuses>
</xml>

というようにfromがなぜか「“」でエスケープされたままです;
Railsのverは全て揃えてあるのですが、Sqlite3はそれぞれ用意されているパッケージのものなのでその違いなのでは…と思っています
今後のことも考えるとフィールド名を変えた方がいいのかも…

関連記事:

Tags: ,
  1. No comments yet.