---
title: "Rails 7 adds Enumerable#maximum"
description: "Rails 7.0 adds Enumerable#maximum"
canonical_url: "https://www.bigbinary.com/blog/rails-7-adds-enumerable-maximum"
markdown_url: "https://www.bigbinary.com/blog/rails-7-adds-enumerable-maximum.md"
---

# Rails 7 adds Enumerable#maximum

Rails 7.0 adds Enumerable#maximum

- Author: Ashik Salman
- Published: February 23, 2021
- Categories: Rails, Rails 7

Rails 7 adds support for `Enumerable#maximum` and `Enumerable#minimum` to easily
calculate the maximum and minimum value from a collection of enumerable
elements.

Before Rails 7, we could only achieve the same results with a combination of
`map` & `max` or `min` functions over the enumerable collection.

```ruby
=> Item = Struct.new(:price)
=> items = [Item.new(12), Item.new(8), Item.new(24)]

=> items.map { |x| x.price }.max
=> 24

=> items.map { |x| x.price }.min
=> 8
```

This is simplified with Rails 7's newly-introduced `maximum` and `minimum`
methods.

```ruby
=> items.maximum(:price)
=> 24

=> items.minimum(:price)
=> 8
```

These methods are available through Action Controller's
[fresh_when](https://api.rubyonrails.org/v6.1.0/classes/ActionController/ConditionalGet.html#method-i-fresh_when)
and
[stale?](https://api.rubyonrails.org/v6.1.0/classes/ActionController/ConditionalGet.html#method-i-stale-3F)
for convenience.

```ruby
# Before Rails 7

def index
  @items = Item.limit(20).to_a
  fresh_when @items, last_modified: @items.pluck(:updated_at).max
end

# After Rails 7

def index
  @items = Item.limit(20).to_a
  fresh_when(@items)
end
```

The `etag` or `last_modified` header values will be properly set here based on
the maximum value of the `updated_at` field.

Check out this [pull request](https://github.com/rails/rails/pull/41404) for
more details.

## Links

- [Human page](https://www.bigbinary.com/blog/rails-7-adds-enumerable-maximum)
