1

ActiveRecord経由でLimesurveyデータベースにアクセスしたい。一部のテーブルには、「79924X192X1240」のような列名があります。モデルにアクセスしようとすると、次のエラーが発生します。

ActionView::Template::Error (/usr/local/rvm/gems/ruby-1.9.2-p318/gems/activerecord-3.1.10/lib/active_record/attribute_methods/time_zone_conversion.rb:44: syntax error, unexpected tINTEGER
                def 79924X192X1240=(original_time)
                         ^):

許可されていないため、メソッドが数字で始まるというエラーが表示されると思います。ただし、Limesurveyがこれらの列を生成するため、列名を変更することはできません。

このエラーは、列のデータ型(79924X192X1240など)が日時の場合にのみ表示されます。varcharのような他のデータ型は問題になりません。

これらの日時列にもアクセスするにはどうすればよいですか?

4

1 に答える 1

0

そのためには生のSQLクエリを実行する必要があります。ActiveRecord は ruby​​ 用に作成されているため、メソッド名を数字で始めることはできません。テーブルの各列はメソッドに相当するため、その情報にアクセスしようとすると、毎回構文エラーがスローされます。

以下を使用する必要があります。ActiveRecord::Base.connection.execute

于 2013-01-10T18:52:04.443 に答える