0
沒有其他答案爲我工作。所以這裏去:Rails 3根據相對模型的開始時間和持續時間計算結束時間?
我有一個Event
模型和Act
模型。每個event
has_many acts
。
每個事件都有一個start_at
日期時間和一個end_at
日期時間。
這些行爲有一個整數列,我希望能夠通過將該事件的開始時間和行爲持續時間的總和相加來計算該事件的結束時間。這樣一切都是自動計算的,用戶不必輸入結束時間。
我目前正在使用:
------------------------
## Events Controller - Create ##
@event = Event.new(params[:event])
@acts = @event.acts
@acts_total = @acts.sum('duration')
@event_ending = (@event.start_at + @acts_total.seconds) ##tried .to_datetime here##
@event.end_at = @event_ending
if @event.save
flash[:notice] = "Your event was created."
redirect_to root_path
-------------------------
## Events Controller - Show ##
@event = Event.find(params[:id])
@acts = @event.acts
@acts_total = @acts.sum('duration')
@event_ending = (@event.start_at + @acts_total.seconds).strftime("%H:%M %p")
-------------------------
## Events View - Show ##
<%= @event_ending %>
我設法讓我的看法這方面的工作,但是當我創建活動,結束時間被設置爲默認 - 開始時間。
它在視圖中工作,因爲我包含在show動作中的@event_ending
邏輯,但是如果我可以用控制器設置它,我可以只顯示事件本身的end_at時間。
我在這裏做錯了什麼?
默認情況下將'end_at'設置爲'start_at'的地方在哪裏? – ABrukish
好吧,我現在知道問題是什麼。我無法從創建操作中的start_at時間生成end_at,因爲在保存之前,該值是零,我假設。我的新解決方法是將該邏輯放入更新操作中,並強制用戶更新它,這恰好適用於我的應用程序。弄清楚如何從創建操作中實現這一點仍然很酷?日期時間很奇怪。 – Louis
如果需要,您可以使用'after_save:on =>:create'回調來爲您的模型設置'end_at' attr,使用'start_at'的已設置值。 – ABrukish