在转换到某个状态之前,验证来自状态机中的表单参数的对象

时间:2011-12-23 15:18:10

标签: ruby-on-rails-3 validation state-machine

我正在使用 pluginaweek / state_machine gem 我需要验证来自用户提交的表单的对象,但仅在转换到某个状态之前。其他州不需要验证。

我有:

class Invoice < ActiveRecord::Base

  state_machine :state, :initial => :draft do
    before_transition :draft => :emited, :do => :check_date

    state :emited
    state :draft
  end

  def check_date
   if params[:date] < Time.now
     false
   end
  end

end

但是模型中没有params hash。有办法做我需要的吗?

1 个答案:

答案 0 :(得分:0)

class Invoice < ActiveRecord::Base
  state_machine :state, :initial => :draft do
    state :draft

    state :emited do
      validate :validate_date
    end
  end

  def validate_date
    errors.add(:date, "in invalid") if params[:date] < Time.now
  end
end

希望这有帮助