rails 5 enum where" like"

时间:2017-09-06 15:29:45

标签: activerecord enums ruby-on-rails-5

我试图查询activerecord模型枚举并在where方法中使用like运算符,它只是不起作用。是否有一些技巧可以让我以这种方式查询枚举?在常规列上正常工作。这是在控制台中。

常规字符串列(标题)的工作方式如下所示

irb(main):092:0> Proposal.select(:id,:department,:status).where('title like "test%"')
Proposal Load (0.3ms)  SELECT  "proposals"."id", "proposals"."department", "proposals"."status" FROM "proposals" WHERE (title like "test%") LIMIT ?  [["LIMIT", 11]]
=> #<ActiveRecord::Relation [#<Proposal id: 7, department: 1, status: "In Progress">, #<Proposal id: 61, department: 2, status: "Won">]>

然而,在enum上尝试它,没有结果。

irb(main):094:0> Proposal.select(:department,:status).where('status like "Wo%"')
Proposal Load (0.3ms)  SELECT  "proposals"."department", "proposals"."status" FROM "proposals" WHERE (status like "Wo%") LIMIT ?  [["LIMIT", 11]]
=> #<ActiveRecord::Relation []>

我知道为什么我不能在enum上使用like运算符?我尝试使用它来过滤使用datatables.net服务器端处理的视图。

1 个答案:

答案 0 :(得分:1)

Enum将数据存储为0,1,2,3之类的整数...然后将映射数映射到模型中定义的枚举值。这就是为什么你没有得到结果