ruby-on-rails – 当提供符号而不是字符串时,包含验证失败

我的模型是这样的:

class Client < ActiveRecord::Base
  VALID_STATES = %w(active suspended closed)
  validates :status,:inclusion => { :in => VALID_STATES }
end

如果状态来自一个表单(作为一个字符串),验证工作正常,但我喜欢做类似的事情:

@client.status = :active

这会导致状态不在列表中的错误,显然这是因为%w也不会生成符号数组,是否有解决此问题而不会使用字符串?

解决方法

你可以为状态定义一个setter,例如:

def status=(new_status)
      super new_status.to_s
    end

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...