0
我想簡化模型上的驗證。 嘗試之前重構模型中的我有使用with_options:with_options條件給出未定義的方法錯誤
# model
validates :number_of_locations, presence: true, if: -> { required_for_step?(:business_details) }
def required_for_step?(step)
return true if form_step.nil?
return true if self.form_steps.index(step.to_s) <= self.form_steps.index(form_step)
end
這工作完全通過它的形式步入required_for_step?函數,並根據用戶所在表單的步驟返回一個值。這意味着我正在訪問'步驟'。
我有大約30個字段爲這個模型有條件地驗證(我在這裏只顯示了一個擺脫混亂,但使用with_options會使我的模型更加有組織,我可以重構條件語句這是什麼是不工作:
# model
with_options :if => required_for_step?(:business_details) do |step|
step.validates :number_of_locations, presence: true
end
def required_for_step?(step)
return true if form_step.nil?
return true if self.form_steps.index(step.to_s) <= self.form_steps.index(form_step)
end
這將返回錯誤是:
undefined method `required_for_step?' for #<Class:0x007f82c2919438>
謝謝你,工作。 – Questifer 2015-02-06 22:32:12