如何使用Mongoid Enum

时间:2015-09-24 06:05:05

标签: ruby-on-rails-4 enums

我正在尝试使用Mongoid Enum并且正在努力解决问题。这是我的模特:

class Notification

  include Mongoid::Document
  include Mongoid::Timestamps
  include Mongoid::Enum
  enum :status, [:new, :viewed]
  ...

end

当我尝试创建一个像这样的新对象时:

notification = Notification.create({ title: "Some title", content: "Some content" })

我在上面代码的行上得到wrong number of arguments (1 for 0)。我不明白。我尝试时仍然收到错误:

notification = Notification.create({ title: "Some title", content: "Some content", status: :new })

OR

notification = Notification.create({ title: "Some title", content: "Some content", :status => :new })

OR

notification = Notification.create({ title: "Some title", content: "Some content", status: 'new' })

我可以创建对象的唯一方法是从模型中删除枚举。

我在这里缺少什么?

3 个答案:

答案 0 :(得分:1)

如果您正在使用rails 5mongoid 6.1,并且想使用mongoid-enum,那么您肯定会度过艰难的一天。

我终于找到了解决这个问题的方法,您需要提一下

gem “mongoid-enum”, git: ‘git@github.com:boie0025/mongoid-enum’, branch: ‘nb/mongoid-6’

了解您的Gemfile。

答案 1 :(得分:0)

我遇到同样的问题:new是枚举的有效符号之一。当我改变时:new to:default,它开始工作。

答案 2 :(得分:0)

这是因为NEW是一个保留字,它不能像这样使用,但你可以使用像xxx_new这样的东西。

是的,我知道这篇文章是从一年前开始的,但也许它可以帮助其他人解决同样的问题。