繁体   English   中英

使用Rails验证,如何将一个短语列入白名单,例如“ Learn Ruby”

[英]Using Rails validations, how do I whitelist a phrase, e.g., “Learn Ruby”

我有validates_presence_of :subject, inclusion: { in: %w( 'Learn Ruby' 'Learn Ruby on Rails'), message: "Please select a valid Subject" }学习Ruby和Learn Ruby on Rails就是我的例子试图做。

我尝试使用单引号和双引号没有成功。

我还尝试了一个数组: validates_presence_of :subject, inclusion: { in: ['Learn Ruby', 'Learn Ruby on Rails'], message: "Please select a valid Subject" }但没有成功。

我熟悉短语宝石 ; 但是,安装它似乎过于矫kill过正。 (而且,如果没有尝试过,我不确定这里是否会有所帮助。)

看起来您正在将旧的validates_x_y类型的方法与Rails 3.x validates混合使用,这更加通用。

validates_presence_of来自Rails 1.x时代, 只能处理某些事物。 validates_inclusion_of作为对应对象,但真正的答案是使用validates调用,该调用可以配置为一次测试任意数量的事物。

表示为:

validates :subject,
  inclusion: {
    in: [
      'Learn Ruby',
      'Learn Ruby on Rails'
    ],
    message: "Please select a valid Subject"
  }

我还添加了一些格式,以使发生的事情更加清晰。 那些单调的人可能真的很纠结。

如果您的介绍使用的是那些老式的validates_presence_of方法,那么它已经过时了,您应该寻找更新的版本或更好的参考。 注意,正式的Rails文档通常是一个很好的起点。

ActiveModel validates_inclusion_of怎么样?

validates_inclusion_of :subject, in: ['Learn Ruby', 'Learn Ruby on Rails'], message: 'Please select a valid Subject'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM