0
由於一些問題,我一直在使用一個系統,該系統在許多頁面中使用了一個模型,其模型內容的驗證因控制器步驟而異。Rails模型應用基於控制器的驗證
E.g.當@step = 1時,模型應該validates_precense_of:name,但是您只驗證直到@step = 2的年齡。
但是,由於rails模型無法讀取會話或全局變量,我該如何應用?
由於一些問題,我一直在使用一個系統,該系統在許多頁面中使用了一個模型,其模型內容的驗證因控制器步驟而異。Rails模型應用基於控制器的驗證
E.g.當@step = 1時,模型應該validates_precense_of:name,但是您只驗證直到@step = 2的年齡。
但是,由於rails模型無法讀取會話或全局變量,我該如何應用?
我相信戴維說的是
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
'@ step'是不是一個全球性的,但放在一邊,不是模型的步驟的一部分?如果不是,爲什麼不能呢?它不需要持久化,只需將其設爲僞屬性即可。 –
不,基本上,我有很多使用交叉模型屬性的視圖,例如,第一視圖將需要一些驅動程序信息:名稱,第二視圖將要求用戶輸入年齡。當我提交第一個視圖時,我希望模型驗證:name,但不驗證年齡,因爲直到第二個視圖才需要它。但是當我點擊提交第二個視圖時,我想要驗證年齡 – phil88530
@step是什麼?這是一個模型嗎?一個變量來確定視圖? @step在應用程序中做了什麼? 編輯:你回答之前,我把這個評論... –