5

我的模型是这样的:

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

如果状态来自表单(作为字符串),则验证工作正常,但我喜欢执行以下操作:

@client.status = :active

这会引发状态不在列表中的错误,显然那是因为%w也不会生成符号数组,有没有解决这个问题而不最终使用字符串的方法?

4

1 回答 1

7

您可以为状态定义一个设置器,例如:

    def status=(new_status)
      super new_status.to_s
    end
于 2012-07-19T22:00:07.417 回答