Rails

Rails drops records not listed in QueryMethods#in_order_of

QueryMethods#in_order_of now filters down to only the values provided, matching the behavior of the eponymous Enumerable method.

ActiveRecord::Core "#find" now reuses "#find_by" cache key

ActiveRecord::Core now prevents duplicate entries in find/find_by cache resulting in slightly improved performance.

Rails 7 raise ActionController::Redirecting::UnsafeRedirectError for unsafe redirects

Now unsafe redirects raise a UnsafeRedirectError instead of an ArgumentError.

Rails 7 adds accepts_nested_attributes_for support for delegated_type

With Rails 7, accepts_nested_attributes_for can be used for delegated_type

Rails 7 now allows automatic inverse_of detection for associations with scopes

This update ensures that "inverse_of" takes into consideration the relevant scope when calculating the object to store in memory.

Rails introduces ActiveRecord::Persistence#update_attribute!

While update_attribute was used to bypass validations, update_attribute! now does the same but raises ActiveRecord::RecordNotSaved in case of any errors encountered in `before_*` callbacks.

Rails 7 now introduces support for generated columns with Postgres

Rails 7 now adds support for generated (virtual) columns to the PostgreSQL adapter that has been available since PSQL v12.

Rails 7 renders accurate plain text output for nested fields

Plain text rendering of nested fields now reserves indentation.

Rails 7 allows setting timestamps on insert_all/upsert_all record creation

All relevant timestamp columns (`created_at`, `created_on`, `updated_at`, `updated_on`) are now set via ActiveRecord when using mass insertion queries.

Rails 7 adds better support for custom enum types in PostgreSQL

With Rails 7, use create_enum to add a new enum type and t.enum to add a column.