class RuboCop::Cop::Rails::DurationArithmetic
2.days.from_now
1.minute.ago
# good
3.days - 1.hour
created_at - 1.minute
Date.yesterday + 3.days
# good - using relative would make it harder to express and read
Time.current + 2.days
Time.current - 1.minute
# bad
@example
Checks if a duration is added to or subtracted from ‘Time.current`.
def corrected_source(operator, duration)
def corrected_source(operator, duration) if operator == :- "#{duration.source}.ago" else "#{duration.source}.from_now" end end
def on_send(node)
def on_send(node) duration_arithmetic_argument?(node) do |*operation| add_offense(node) do |corrector| corrector.replace(node, corrected_source(*operation)) end end end