我有
enum unit_type: [:Ad, :Survey]
在我的模特中。
- 但是当我查询
时ViewsLog.where(:unit_type=>"Survey").count
它无法正常工作
SELECT COUNT(*) FROM "views_logs" WHERE "views_logs"."deleted_at" IS NULL AND "views_logs"."unit_type" = $1 [["unit_type", 0]]
它仍然获得:unit_type => 0
数据
答案 0 :(得分:1)
您应该在枚举中使用snake_case
(小写)标识符:
enum unit_type: [:ad, :survey]
这是因为ActiveRecord使用键映射到范围方法和询问器。这不仅违反了命名约定,而且可能导致自从大写= Ruby中的常量以来的怪异。您可以使用此范围方法来查询:
ViewsLog.survey.count
如果由于某种原因需要编写where子句,则应使用符号而不是枚举标识符的字符串:
ViewsLog.where(unit_type: :survey).count