我正在使用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?有什么想法吗?
谢谢
答案 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
你很好。