ruby-on-rails - 使用 Rails 验证,如何将短语列入白名单,例如 "Learn Ruby"

标签 ruby-on-rails ruby

我有 validates_presence_of :subject,clusion: { in: %w( 'Learn Ruby' 'Learn Ruby on Rails'), message: "Please select a valid subject"} 学习 Ruby 并学习Ruby on Rails 是我正在尝试做的事情的例子。

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

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

我熟悉 Phrasing gem ;然而,安装它似乎有点矫枉过正。 (而且,由于没有尝试过,我不确定它在这里会有帮助。)

最佳答案

看起来您正在将旧的 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 documentation通常是一个很好的起点。

关于ruby-on-rails - 使用 Rails 验证,如何将短语列入白名单,例如 "Learn Ruby",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50257727/

相关文章:

ruby-on-rails - ActiveRecord 查询 : Accessing outer field in subquery

ruby - 方法调用引发 "undefined method"错误

ruby-on-rails - Rails 如何在下午 4 点(在不同区域)提前 2 天设置日期和时间(Rails,Rspec)

ruby - 如何在 s3 上使用 ruby​​ aws-sdk 创建目录结构?

sql - INNER JOIN 条件中的列顺序严重影响性能

ruby-on-rails - 符号的自定义 f.label?

ruby-on-rails - 如何在 Rails 中处理多种用户类型?

ruby-on-rails - Rails belongs_to 关联(与 :class_name) returns nil

ruby-on-rails - 将描述段落添加到 ActiveAdmin/new Page

ruby-on-rails - Rail 对象关系和 JSON 渲染