Ruby on rails 在rails中设置枚举

Ruby on rails 在rails中设置枚举,ruby-on-rails,enums,Ruby On Rails,Enums,我试图在Rails测试中模拟类似枚举的效果。然而,我似乎无法让它发挥作用 例如 我有一个模块叫Days: module Days SUNDAY = 0; MONDAY = 1; TUESDAY = 2; WEDNESDAY = 3; THURSDAY = 4; FRIDAY = 5; SATURDAY = 6; end 在同一个目录中,我有一个调度器_spec.rb require 'spec_helper' describe Schedule

我试图在Rails测试中模拟类似枚举的效果。然而,我似乎无法让它发挥作用

例如

我有一个模块叫Days:

module Days    
   SUNDAY = 0;
   MONDAY = 1;
   TUESDAY = 2;
   WEDNESDAY = 3;
   THURSDAY = 4;
   FRIDAY = 5;
   SATURDAY = 6;
end
在同一个目录中,我有一个调度器_spec.rb

require 'spec_helper'
describe Scheduler do
  include Days
  ... 
但是,Ruby会抛出以下错误:

in `block in <top (required)>': uninitialized constant Days (NameError)
    from /Users/krg07/.rvm/gems/ruby-1.9.3-p125/gems/rspec-core-2.9.0/lib/rspec/core/example_group.rb:201:in `module_eval'
    from /Users/krg07/.rvm/gems/ruby-1.9.3-p125/gems/rspec-core-2.9.0/lib/rspec/core/example_group.rb:201:in `subclass' ...

你知道我该怎么做吗?谢谢

ruby没有enum,但是你可以在链接中做类似的事情

您的模块不得包含在Rails自动加载路径中或不遵循自动加载约定。您可能只需要在包含文件之前要求该文件,就可以解决此问题:

require 'spec_helper'
require './days'
describe Scheduler do
  include Days

Rails 4.1具有枚举。我刚刚升级并开始使用它。工作起来很有魅力


我同意。我尝试了类似的方法-我在一个模块中添加了这些枚举,并尝试包含该模块。但是,问题是找不到此模块。链接解释了如何将它们放入类中。或者你也可以使用hash:sunday=>1我觉得可以解决它,但不幸的是,它找不到常量。I get:in':未初始化常量错误