用日期查询时,Rails更改了列的大小写

时间:2018-11-10 07:42:22

标签: ruby-on-rails

我正在使用Rails,并尝试从表 Echeancier 和列 ech_dtDate 中获得不同的日期。

我的查询:

 @dates = Echeancier.where('ech_dtDate BETWEEN ? AND ?',@dateCurrent.beginning_of_month,@dateCurrent.end_of_month).uniq.pluck(:ech_dtDate)

我遇到以下错误:

PG::UndefinedColumn: ERROR: column "ech_dtdate" does not exist LINE 1: ...heanciers"."ech_dtDate" FROM "echeanciers" WHERE (ech_dtDate... ^ HINT: Perhaps you meant to reference the column "echeanciers.ech_dtDate". : SELECT DISTINCT "echeanciers"."ech_dtDate" FROM "echeanciers" WHERE (ech_dtDate BETWEEN '2018-10-31 23:00:00.000000' AND '2018-11-30 22:59:59.999999')

为什么Rails将ech_dtDate列更改为ech_dtdate?有什么想法吗?

谢谢

1 个答案:

答案 0 :(得分:1)

通常相对于 rails惯例列名应使用l owercase和snake_case 。可能由于列名ech_dtDate与rails遵循的命名约定相冲突而导致错误。您有两种选择。

选项1:

请按照以下步骤尝试在迁移中重命名列名。

1)生成迁移文件

rails g migration FixColumnName

2)打开文件并添加

rename_column :echeanciers, :ech_dtDate, :ech_dtdate

并保存文件。

3)在终端中运行rake db:migrate

选项2:

Echeancier模型中添加以下行。

alias_attribute :ech_dtdate, :ech_dtDate

你很好。