2015-06-24 82 views
1

我有一個屬性quarter,我保存爲字符串形式 - "2015-1",這意味着2015年和第一季度。基於年份和季度的日期範圍

如何獲得此quarter內所有日期的範圍?

我需要將其納入驗證:

validates :date, 
    presence: true, 
    inclusion: { in: something_that_returns_the_range_from_quarter_attr } 
+0

我有點困惑。你想驗證'季度'attr? – caspg

+0

我不知道。我需要驗證稱爲'date'的屬性。這個日期應該包含在一個值範圍內,這些值是從'quarter'屬性獲得的(不知何故)。 –

回答

1

我會做這樣的:

#i would do the validation like so 
validates :date_in_quarter 

def date_in_quarter 
    if self.date.blank? || !self.quarter_date_range.include?(self.date) 
    self.errors.add(:date, "is blank or not in allowed range") 
    end 
end 

#the validation uses this method which gets date range from quarter attribute 
def quarter_date_range 
    year, quarter = self.quarter.split("-").collect(&:to_i) 
    start_month = ((3 * quarter) - 2) 
    start_date = Date.parse("#{year}-#{start_month}-01") 
    end_date = start_date + 3.months - 1.day 
    start_date..end_date 
end 
+0

我會接受,謝謝! –

+0

只需在'quarter_date_range'方法中修復丟失的開放括號即可。 :) –

相關問題