我想在一個範圍內使用DateTime.parse將字符串轉換爲時間,但是,我收到了一個未定義的局部變量錯誤。Rails範圍內的DateTime.parse
是否有可能轉換範圍內的字段或我需要嘗試其他的東西嗎?
我的範圍:
scope :time_range, lambda {
a = DateTime.parse(start_time_am)
where("#{a} <= ?", Time.now.strftime('%H'))
}
- 更新 -
與此打過左右,我發現我也許應該覆蓋默認訪問。我現在有以下幾點:
def start_time_am
read_attribute(:start_time_am).strftime("%H%M").to_i
end
在控制檯中,我start_time_am場現在看起來像:
Promotion.last.start_time_am
=> 430
但是,如果我想定義一個新的領域暫時所以我仍然可以使用最初的一。
我可以在控制檯中訪問它,但不能在搜索時訪問。例如。
def start_time_new
read_attribute(:start_time_am).strftime("%H%M").to_i
end
def self.time_range
time = Time.now.strftime('%H%M').to_i
where("start_time_new <= ?", time)
end
給出未知列錯誤。我認爲attr_reader會解決,但它不工作。
感謝
start_time_am是在數據庫中的字段。我想這會更容易輸入日期時間而不是字符串.. – simonmorley
你能舉一個你期望這個記錄返回的記錄的例子嗎?是的,start_time_am是DB中的一列,它被定義爲模型實例上的一個方法。但是它並沒有在課堂上定義,你期望它會以其他方式返回嗎? –
只是試圖轉換值,以便我可以與Time.now比較 – simonmorley