This blog is part of our Rails 6.1 series.
Before Rails 6.1, to validate a numerical value that falls within a specific range, we had to use greater_than_or_equal_to: and less_than_or_equal_to:.
In the example below, we want to add a validation that ensures that each item in the StockItem class has a quantity that ranges from 50 to 100.
1class StockItem < ApplicationRecord 2 validates :quantity, numericality: { greater_than_or_equal_to: 50, less_than_or_equal_to: 100 } 3end 4 5StockItem.create! code: 'Shirt-07', quantity: 40 6#=> ActiveRecord::RecordInvalid (Validation failed: Quantity must be greater than or equal to 50)
In Rails 6.1, to validate that a numerical value falls within a specific range, we can use the new in: option:
1class StockItem < ApplicationRecord 2 validates :quantity, numericality: { in: 50..100 } 3end 4 5StockItem.create! code: 'Shirt-07', quantity: 40 6#=> ActiveRecord::RecordInvalid (Validation failed: Quantity must be in 50..100)
Check out the pull request for more details on this feature.