我有一個表格,我正嘗試將其創建爲分段。每個部分將一些信息保存到該表中,然後轉到下一頁。我試圖找出驗證模型中每個部分數據的最佳方法。我想要使用類似validates_presence_of的東西,但是期望所有被驗證的數據將在保存時可用...在我的情況下,整個表格在完成每個部分之前不會被填寫。Rails部分表格驗證
如果有辦法做到這一點,最好的辦法是什麼?
我有一個表格,我正嘗試將其創建爲分段。每個部分將一些信息保存到該表中,然後轉到下一頁。我試圖找出驗證模型中每個部分數據的最佳方法。我想要使用類似validates_presence_of的東西,但是期望所有被驗證的數據將在保存時可用...在我的情況下,整個表格在完成每個部分之前不會被填寫。Rails部分表格驗證
如果有辦法做到這一點,最好的辦法是什麼?
您可以使用:if
或:unless
選項進行驗證。如果您在表格中添加「步驟」列,您可以使用它來驗證模型。
class Item < ActiveRecord::Base
validates_presence_of :name # step 1
validates_presence_of :category_id, :if => Proc.new { |i| i.step >= 2 } # step 2
validates_presence_of :description, :if => Proc.new { |i| i.step >= 3 } # step 3
end
然後,您可以每次在控制器中增加步數。
def update
@item = Item.find(params[:id])
@item.step += 1
if @item.update_attributes(params[:item])
# ...
end
end
您可能還想考慮使用state machine。
有一個非常好的grouped_validations gem,有利於同時驗證有限的模型屬性組。無需像上面那樣進行狀態跟蹤。