Более Ruby-esque способ кодировать это? - PullRequest
1 голос
/ 02 ноября 2010

У меня есть метод, который я вызываю, истек?который просто предназначен для проверки того, прошло ли более 24 часов с того момента, как мой объект был обновлен, и, если это так, вернет true.Вот мой метод, но, хотя он работает, он кажется грязным, кто-нибудь может придумать лучший способ достичь моей цели?

DAY_IN_SECS = 86400

def expired?
  return true unless (Time.now <=> self.updated_at + DAY_IN_SECS) == -1
end

Ответы [ 3 ]

12 голосов
/ 02 ноября 2010

Вы можете использовать функциональность active_support, поэтому:

def expired?
  self.updated_at > 1.day.ago
end
5 голосов
/ 02 ноября 2010

Даже в обычном Ruby вы все равно можете сделать проще:

def expired?
  Time.now > self.updated_at + DAY_IN_SECS
end
3 голосов
/ 02 ноября 2010

Вы работаете с Rails, поэтому вы можете использовать методы Rails Date / Time:).

Для вашей задачи мне нравится это:

def expired?
  updated_at.advance(:days => 1).past?
end
...