ActiveRecord和非法列名

时间:2013-01-10 18:16:22

标签: ruby-on-rails rails-activerecord limesurvey

我想通过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)为datetime时才会出现此错误。像varchar这样的其他数据类型没有任何问题。

我如何访问这些日期时间列呢?

1 个答案:

答案 0 :(得分:0)

您需要为此执行原始sql查询。 ActiveRecord是为ruby编写的,它不允许方法名称以数字开头。由于表中的每一列都等同于一个方法,因此尝试访问该信息每次都会引发语法错误。

您需要使用:ActiveRecord::Base.connection.execute