提供符号而不是字符串时,包含验证失败

时间:2012-07-19 21:57:09

标签: ruby-on-rails

我的模特就像:

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

如果状态来自表单(作为字符串),则验证工作正常,但我喜欢这样做:

@client.status = :active

会抛出一个错误,表明状态不在列表中,显然是因为%w也没有生成一个符号数组,是否有解决这个问题而不会使用字符串?

1 个答案:

答案 0 :(得分:7)

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

    def status=(new_status)
      super new_status.to_s
    end