我试图查询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服务器端处理的视图。
答案 0 :(得分:1)
Enum将数据存储为0,1,2,3之类的整数...然后将映射数映射到模型中定义的枚举值。这就是为什么你没有得到结果