2015-03-18 4 views
1

На моем activadmin, я должен дать часы открытия и закрытия каждого магазина. Например, когда магазин открыт с 09:00 до 04:00, он записывается как одна и та же дата. Но мой алгоритм имеет неисправностьКак вернуться к предыдущему дню?

Мой алгоритм:

def opened? 
    today_day = Date.today.wday 
    yesterday_day = today_day == 0 ? 6 : (today_day - 1) 
    opening = self.openings.where(day: [today_day, yesterday_day]).first 
    if opening 
     opening_day = (Time.now).day 
     if opening.closes_at < opening.opens_at 
     opening_day = yesterday_day 
     end 
     # binding.pry 
     today_opens_at = Time.new((Time.now).year, (Time.now).month, opening_day, opening.opens_at.hour, opening.opens_at.min) 
     today_closes_at = Time.new((Time.now).year, (Time.now).month, (Time.now).day, opening.closes_at.hour, opening.closes_at.min) 
     if today_opens_at < (Time.now) && (Time.now) < today_closes_at 
     true 
     else 
     false 
     end 
    else 
     false 
    end 
    end 

Я пытаюсь добавить драгоценный камень ActiveSupport для «1.day», но у меня есть «аргумент из диапазона» ошибки я не найти решение, можете ли вы помочь мне быстро, пожалуйста?

ответ

0

yerderday_day должен быть день месяца (0..30)

 today_day_of_week = Date.today.wday 
    yesterday_day_of_week = today_day_of_week == 0 ? 6 : (today_day_of_week - 1) 
    opening = self.openings.where(day: [today_day_of_week, yesterday_day_of_week]).first 
    yesterday_day = Date.today.prev_day.day 

или просто заменить этот блок:

if opening.closes_at < opening.opens_at 
    opening_day = Date.today.prev_day.day 
    end 
+0

Открытие в моем активном админ стол, но в моем код У меня только модель «открытие» –

+0

Могли бы вы опубликовать модель «открытие»? –

+0

открытия модели: "класс Открытие