rails - rspec - 为什么这个"validates_inclusion_of:role,:in =>%w [one,two,three]}"不起作用

Mic*_*ant 3 ruby validation rspec ruby-on-rails ruby-on-rails-3

我收到一个错误,这个方法不存在,但这似乎相当基本,我不知道为什么我得到错误?

it { should validate_presence_of :role } # This is OK.

 Failure/Error: 
it { should validate_inclusion_of :role, :in => %w[one two three ] }
 NoMethodError:
   undefined method `validate_inclusion_of' for #<RSpec::Core::ExampleGroup::Nested_1:0x007fad7474f9b8>
Run Code Online (Sandbox Code Playgroud)

代码:

class User < ActiveRecord::Base
  validates_presence_of :role
  validates_inclusion_of :role, :in => [one, two three]       ]
Run Code Online (Sandbox Code Playgroud)

http://apidock.com/rails/ActiveModel/Validations/ClassMethods/validates_inclusion_of

Ada*_*dam 15

这已不再适用.ensure_inclusion_of已弃用,将在以后的版本中删除.请参阅下一个使用validate_inclusion_of的答案

我不认为有这样的validates_inclusion_of的shoulda匹配器.但是,根据shoulda-matchers项目中掌握的内容,我认为你可以这样做:

it { should ensure_inclusion_of(:role).in_array([1,2,3]) }     
Run Code Online (Sandbox Code Playgroud)


djG*_*ill 10

这里一个早该匹配validate_inclusion_of.

ensure_inclusion_of 已弃用,将在下一个主要版本中删除.

你确定你的代码在一个describe Model do区块内吗?