findメソッドの動作の違い
February 9th, 2009
No 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はそれぞれ用意されているパッケージのものなのでその違いなのでは…と思っています
今後のことも考えるとフィールド名を変えた方がいいのかも…