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 回答