Enum无法在导轨中正常工作

时间:2015-12-14 11:36:47

标签: ruby-on-rails activerecord enums

我有

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数据

1 个答案:

答案 0 :(得分:1)

您应该在枚举中使用snake_case(小写)标识符:

enum unit_type: [:ad, :survey]

这是因为ActiveRecord使用键映射到范围方法和询问器。这不仅违反了命名约定,而且可能导致自从大写= Ruby中的常量以来的怪异。您可以使用此范围方法来查询:

ViewsLog.survey.count

如果由于某种原因需要编写where子句,则应使用符号而不是枚举标识符的字符串:

ViewsLog.where(unit_type: :survey).count