我的枚举不适用于子句

时间:2015-07-29 18:04:12

标签: ruby-on-rails ruby-on-rails-4 enums

我有以下型号

class Request < ActiveRecord::Base
    # Enumerables
    enum status: [:pending, :accepted, :completed]
end

并且迁移看起来像这样:

class CreateRequests < ActiveRecord::Migration
    def change
        create_table :requests do |t|
            t.column    :status, :integer, default: 0, index: true
        end
    end
end

简化,为了问题。

现在,关于我的枚举的一切工作正常。

@request.pending?
@request.accepted!
# And so on...

但是,当我执行以下查询时:

Request.where(status: :accepted)

这是我的日志显示的内容:

  

SELECT&#34; requests&#34;。* FROM&#34; requests&#34;在哪里&#34;请求&#34;。&#34;状态&#34; = NULL LIMIT 20 OFFSET 0

由于NULL,这显然是错误的。现在我知道我可以做到这一点

Request.accepted

但另一种方式应该也可以,如the documentation中所述。

发生了什么事?

2 个答案:

答案 0 :(得分:0)

试试这个

accepted_requests = Request.accepted

参考:In Rails 4.1, how to find records by enum symbol?

答案 1 :(得分:0)

我刚刚意识到我尝试使用的功能不可用,因为我一直在阅读文档的Edge版本,但可能仍未发布。愚蠢的错误。