I think the most natural way read the code created_at < 10.minutes.ago is "created_at is less than ten minutes ago," but that reading suggests the mistaken interpretation that created_at is *fewer than ten* minutes ago. The correct interpretation is that created_at is *earlier than* ten minutes ago. Is there a better way to write the same comparison?
I've thought of three potential improvements so far: - 10.minutes.ago > created_at This "Yoda condition" style doesn't have a translation into ordinary English that tempts you into misunderstanding. But Yoda conditions are inconsistent with the rest of the comparisons in my codebase. - Time.now > 10.minutes.after(created_at) This is another style of Yoda condition. This one allows people who misread the operator (as "more than ten minutes after created_at" instead of "later than ten minutes after created_at") to correctly predict the actual behavior, but for the wrong reason. - created_at.earlier_than?(10.minutes.ago) The ordinary English translation (created_at is earlier than ten minutes ago) is correct. But this requires monkeypatching DateTime (or using the human_time gem) to add the earlier_than? method, which I'd prefer not to do. Is there a better way that avoids Yoda conditionals, monkeypatching and extra gems? Thanks for the consideration, Nate -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/b8058e08-6513-4979-b171-3721035464ec%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.

