我正在構建一個用於問題管理的簡單Ruby on Rails應用程序。我有一個問題模型如下:如何在對模型執行操作之前對相關模型執行復雜的驗證檢查?
class Problem < ActiveRecord::Base
attr_accessible :active, :impact, :incident_number, :issue_description, :root_cause, :user_id, :problem_summary, :incident_priority, :timeline_enabled
attr_accessor :enable_timeline
validates :problem_summary, :length => { :in => 10..100 }
belongs_to :user
has_one :timeline
has_many :actionitems
end
具有的has_many belongs_to的關聯與模型actionitems:
class Actionitem < ActiveRecord::Base
attr_accessible :completion_date, :description, :initial_due_date, :notes, :problem_id, :revised_due_date, :status, :user_id
belongs_to :problem
end
我希望能夠更新的問題記錄,並與一些保存一套有限的驗證(我仍然需要添加這些驗證)。但是,我希望有一個「完成問題調查」按鈕,可以觸發問題控制器上的方法,將問題記錄上的:active屬性設置爲false。我希望能夠在執行此操作之前對問題記錄運行一組不同的驗證,並驗證與此問題記錄相關的所有操作項(如果有)都處於:status「completed」 。
,我有兩個問題:
- 如何只在規定動作完成一組特定的驗證嗎?
- 如何在對問題執行操作之前驗證相關的Actionitem實例處於「完成」狀態?
這個任務對我來說似乎很複雜。如果你能指點我需要利用的,以便能夠實現這一點,將不勝感激! (我讀取驗證:on =>:保存etc和accepts_nested_attributes_for,但我不知道如何將所有這些放在一起來實現我想要的行爲)。
非常感謝您的幫助!