Rails模型应用基于控制器的验证

时间:2013-07-24 13:26:43

标签: ruby-on-rails model controller global-variables

由于一些问题,我一直在使用一个在许多页面中使用模型的系统,其中模型内容的验证因控制器步骤而异。

E.g。当@step = 1时,模型应该是validates_precense_of:name,但是你只有validates_precense_of:age,直到@step = 2

但是,由于rails模型无法读取会话或全局变量,我该如何应用?

1 个答案:

答案 0 :(得分:0)

我相信戴夫所说的是

class Model 
  attr_accessor :step
  validate_presence_of :name, if: { |m| m.step == 1 }
  validate_presence_of :age, if: { |m| m.step == 2 }
end

class Controller
  def first_step
    @model = Model.new(params[:model].merge(step: 1))
    if @model.valid?
   ....
  end
  def second_step
    @model.update_attributes(params[:model].merge(step: 2))
    if @model.valid?
   ....
  end
end