首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >validate_inclusion_of应该不工作了

validate_inclusion_of应该不工作了
EN

Stack Overflow用户
提问于 2015-05-09 02:30:08
回答 3查看 637关注 0票数 1

最近将一个代码库和gem一起升级到了rails4,现在我们得到了这个错误。

代码语言:javascript
复制
Failure/Error: it { is_expected.to ensure_inclusion_of(:usage).in_array(['Index', 'Slide', 'Body']).with_message("%{value} is not a valid usage") }
   ["Index", "Slide", "Body"] doesn't match array in validation

下面是相关的模型代码

代码语言:javascript
复制
USAGES = ['Index', 'Slide', 'Body']
validates_inclusion_of :usage, :in => USAGES, :message => "%{value} is not a valid usage"

我是不是漏掉了什么?我不明白为什么这会失败。

EN

回答 3

Stack Overflow用户

发布于 2015-07-30 04:18:15

validate_inclusion_of在内部使用allow_value。诚然,我们应该为您提供更好的错误消息,但您应该能够编写以下测试来找出发生了什么:

代码语言:javascript
复制
it { should allow_value("Index").for(:usage) }
it { should allow_value("Slide").for(:usage) }
it { should allow_value("Body").for(:usage) }

it do
  should_not allow_value("something else").
    for(:usage).
    with_message("%{value} is not a valid usage")
end

我的猜测是,应该匹配程序不会自动在失败消息中插入%{value}。如果这是真的,那么我要做的(在filing an issue之后)是将消息提取到一个i18n密钥,然后将该密钥的名称传递给with_message

票数 2
EN

Stack Overflow用户

发布于 2017-07-13 01:10:58

对我来说很有效-

代码语言:javascript
复制
expect { should validate_inclusion_of(:usage).in?(['a', 'b']) }
票数 1
EN

Stack Overflow用户

发布于 2015-05-09 02:34:45

你应该试试这个-

代码语言:javascript
复制
validates :usage, inclusion: { :in => %w( Index Slide Body ), :message => "%{value} is not a valid usage" }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30130579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档