時間間隔の仮想属性を持つモデルがあります。
attr_accessible :description, :time_end, :time_start, :duration
belongs_to :timesheet
def duration
if attribute_present?("time_start") and attribute_present?("time_end")
ChronicDuration.output(self.time_end - self.time_start)
else
ChronicDuration.output(0)
end
end
def duration=(d)
self.time_end = self.time_start + d
end
ただし、新しいオブジェクトを作成する場合、Rails は開始前に期間を設定しようとするため、エラーが発生します。開始後に期間が設定されていることを確認するにはどうすればよいですか?
エラー:
undefined method `+' for nil:NilClass
パラメータ:
{"utf8"=>"✓",
"authenticity_token"=>"dg+CysIxZORyV3cwvD+LdWckFdHgecGDFDBNOip+iKo=",
"entry"=>{"time_start"=>"now",
"duration"=>"2h",
"description"=>""},
"commit"=>"Create Entry"}