See examples of using Ruby's Data class for creating value objects, removing boilerplate code, and enhancing API response handling| All about coding
Value objects are compared using only the values of their properties, having no conceptual identity| martinfowler.com