A form object is an object designed specifically to be passed to form_for . It is often used to aggregate data to create multiple objects or to receive ephemeral data that is used and then discarded.

Rails 4 introduced a small handy module called ActiveModel::Model . A Ruby class can mix in this module and gain a ton of functionality, including:

initialization with a hash of attributes

validation of attributes

presentation of errors

interaction with view helpers like form_for and the new form_with