byebugを使用して、私は関連の問題を理解することができました。いくつかの光のコンソールプレイを使用して
[12, 21] in /home/ubuntu/workspace/sow_trip/app/models/task.rb
13:
14: private
15:
16: def update_project_record
17: byebug
18: #self.project.start_date = self.task_start_date if self.task_start_date < thisProject.project.start_date
19: #self.project.end_date = self.task_end_date if self.task_end_date > self.project.end_date
=> 20: end
21: end
(byebug) self
#<Task id: 31, task_name: "Fail Me Boo", comment: nil, task_start_date: "2016-05-05 00:00:00", task_end_date: "2020-02-20 00:00:00", project_id: 1, created_at: "2017-08-23 06:10:31", updated_at: "2017-08-23 06:10:31", product: "D", document_id: 1>
(byebug) project
#<Project id: 1, name: "Demo Test", project_type: "Misc", cost: "7500", start_date: "2017-05-01 00:00:00", end_date: "2017-07-28 00:00:00", created_at: "2017-08-23 02:39:44", updated_at: "2017-08-23 06:10:10", client_id: 1>
(byebug) task
はproject
がすでにこのコール内で定義されて実現するために私を導いたので、私はself
のインスタンスを検索する必要はありません。
def update_project_record
project.start_date = self.task_start_date if self.task_start_date < project.start_date
project.end_date = self.task_end_date if self.task_end_date > project.end_date
end
同様の状況が見つからないため、私の最終的なコードは誰でも見ていますか?
私は自動的にupdated_at
フィールドを更新するためにbelongs_to :project, touch: true
を使用しますが、私は「プロジェクト」はend-date
state_date
possible-、最初と最後の-possible-を持っている必要があり、カスタム日時を持っています