問題管理用の単純な 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 関連付けがあります。
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" であることを検証できるようにしたいと考えています。 .
私が持っている2つの質問:
- 特定のアクションに対してのみ特定の一連の検証を実行するにはどうすればよいですか?
- 問題に対してアクションを実行する前に、Actionitem の関連インスタンスが「完了」ステータスであることを確認するにはどうすればよいですか?
このタスクは私には非常に複雑に思えます。これを達成するために何を利用する必要があるか教えていただければ幸いです。(validates :on => :save などを読み、accepts_nested_attributes_for を読みましたが、これらすべてをまとめて、必要な動作を実現する方法がわかりません)。
ご協力ありがとうございました。