我的模特就像:
class Client < ActiveRecord::Base
VALID_STATES = %w(active suspended closed)
validates :status, :inclusion => { :in => VALID_STATES }
end
如果状态来自表单(作为字符串),则验证工作正常,但我喜欢这样做:
@client.status = :active
会抛出一个错误,表明状态不在列表中,显然是因为%w
也没有生成一个符号数组,是否有解决这个问题而不会使用字符串?
答案 0 :(得分:7)
您可以为状态定义一个setter,例如:
def status=(new_status)
super new_status.to_s
end