我有 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/