私のモデルにはstart_timeとend_timeの2つの列があります。レールで日付時間オブジェクトを操作する
このモデルを生成するためのビューには、日付のクールなカレンダーと時間のための素晴らしいタイムセレクターがありますが、これをもっとエレガントにする方法はわかりません。私は、この混乱を避けるために、データベースのフォームから日付と時刻の両方を保存できるようにしたいと考えています。
私はこの解決策を思いつき、私がそれを見るたびに気分が悪くなります。これをもっときれいにするためのアイデアはありますか?
attr_accessor :start_time_time, :end_time_time, :start_time_date, :end_time_date
def start_time_date
self.start_time.try(:strftime,DATE_FORMAT)
end
def end_time_date
self.end_time.try(:strftime, DATE_FORMAT)
end
def start_time_time
self.start_time.try(:strftime, TIME_FORMAT)
end
def end_time_time
self.end_time.try(:strftime, TIME_FORMAT)
end
def start_time_date=(date)
begin
self.start_time = nil
self.start_time = Time.zone.parse("#{Date.strptime(date, DATE_FORMAT).to_formatted_s(:db)} #{start_time_time}") unless date.blank?
rescue
errors.add(:start_time_date)
end
end
def end_time_date=(date)
begin
self.end_time = nil
self.end_time = Time.zone.parse("#{Date.strptime(date, DATE_FORMAT).to_formatted_s(:db)} #{end_time_time}") unless date.blank?
rescue
errors.add(:end_time_date)
end
end
def start_time_time=(time)
begin
self.start_time = Time.zone.parse("#{Date.strptime(start_time_date, DATE_FORMAT).to_formatted_s(:db)} #{time}") unless start_time_date.blank? or time.blank?
rescue
errors.add(:start_time_time)
end
end
def end_time_time=(time)
begin
self.end_time = Time.zone.parse("#{Date.strptime(end_time_date, DATE_FORMAT).to_formatted_s(:db)} #{time}") unless end_time_date.blank? or time.blank?
rescue
errors.add(:end_time_time)
end
end