有人能指出我为什么ActiveRecord :: Enum在这个简单的例子中没有按预期工作吗?

时间:2016-02-24 16:27:47

标签: ruby-on-rails ruby activerecord enums

我正在实现一些代码重构,为了我的目的,我已经确定ActiveRecord :: Enum将是一个完美的契合。对于那些没有使用或听说过ActiveRecord :: Enum的人来说,这里是文档链接 ActiveRecord::Enum

以下是从我遇到问题的文档中获取的代码。

class Conversation < ActiveRecord::Base
 enum status: [ :active, :archived ]
end

# conversation.update! status: 0
conversation.active!
conversation.active? # => true
conversation.status  # => "active"

# conversation.update! status: 1
conversation.archived!
conversation.archived? # => true
conversation.status    # => "archived"

# conversation.status = 1
conversation.status = "archived"

conversation.status = nil
conversation.status.nil? # => true
conversation.status      # => nil

以下是我尝试模仿此行为的示例代码:

class ReverificationTracer < ActiveRecord::Base
    enum status: [ :verified, :unverified ]
end

rev = ReverificationTracker.create

rev.verified! ==> true
rev.unverified? ==> false
rev.status ==> nil

rev.unverified! ==> true
rev.unverified? ==> false
rev.status ==> nil

当我检查rev变量时,我确实看到状态已转移到'0'

rev

id: 1,
account_id: nil,
status: "0",
created_at: Wed, 24 Feb 2016 16:24:55 UTC +00:00,
updated_at: Wed, 24 Feb 2016 16:25:21 UTC +00:00>

归档时,我看到状态增量为1。

为什么这不符合我对文档的期望?

1 个答案:

答案 0 :(得分:2)

问题是由status列为字符串列而非整数引起的。将其更改为整数,一切都将按预期工作。