findメソッドの動作の違い
2月 9th, 2009
今日ふとしたことで気付いたのですが、CentOS5とUbuntu8.10でrailsのfindの戻り値が違ってて困りました
フィールド名に予約語使ってしまった自分が悪いっちゃ悪いんだけど…
今回、Sqlite3DBでfromというフィールドのあるテーブルを操作しようとしました
当然fromはSELECT * FROM table WHERE ~とかで使いますのでそのままではいけません
windowsとCentOSでは`from`とすることで大丈夫だったのですが、Ubuntuではなぜかエラー;
Railsで返ってきたオブジェクトをto_xmlすると…
RUBY:
-
# コントローラ
-
statuses = Status.find_by_sql('SELECT DISTINCT `from` FROM WHERE~')
-
render :text => statuses.to_xml
これで表示されるXMLは
XML:
-
<?xml version="1.0" encoding="utf-8"?>
-
<statuses type="array">
-
<status>
-
<`from` class="NilClass">~</`from`>
-
</status>
-
...
-
</statuses>
-
</xml>
というようにfromがなぜか「``」でエスケープされたままです;
Railsのverは全て揃えてあるのですが、Sqlite3はそれぞれ用意されているパッケージのものなのでその違いなのでは…と思っています
今後のことも考えるとフィールド名を変えた方がいいのかも…