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 に答える