2014-12-13 115 views
0

我有attr_acessor模型訂票:日期和時間:軌道4 attr_accessor和新記錄

class Booking < ActiveRecord::Base 
    # ... 
    before_save :convert_date_and_time 

    attr_accessor :date, :time 

    def convert_date_and_time 
    self.date_and_time = DateTime.parse("#{date.to_s} #{time.to_s}") 
    end 
end 

我試圖定義的日期和時間getter方法:

def date 
    date_and_time.to_date if self.id.present? 
    end 

    def time 
    date_and_time.to_time if self.id.present? 
    end 

但我認爲這不是完成它的方式。我需要self.id.present?因爲當我試圖創建新記錄時,顯然date_and_time仍然沒有任何價值,並且getters會產生錯誤。

如果是這種情況,那麼getters應該如何處理,以便我可以處理尚未保存的新記錄?我應該像現在這樣離開他們嗎?

謝謝!

回答

1

要檢測新的記錄,你可以使用new_record?,但在你的情況下,你可以使用try

date_and_time.try(:to_date) 
date_and_time.try(:to_time)