Rails 7 allows passing raw SQL as `on_duplicate` value to `#upsert_all`Rails 7 allow passing raw SQL statements to `on_duplicate` and `returning` option as value to ActiveRecord `#upsert_all` method.
Rails now serves files via proxyRails 6.1 has added support to ActiveStorage that serves files via proxying.
Rails 7 provides context when logging unpermitted parametersRails 7 enables passing context to ActionController::Parameters providing more information to the developer.
Rails 7 adds encryption to ActiveRecordRails 7 supports application-level encryption. We can declare which attributes should be encrypted and, ActiveRecord will encrypt and decrypt when necessary.
Rails 7 ensures has_one autosave association callbacks get called onceIn Rails 7, the autosave association callbacks for the has_one are non-cyclic.
Rails 7 allows access to nested encrypted secrets by method callsWe can now access nested secrets stored in credentials.yml.enc using the dot (.) syntax instead of using [ ]
Rails 7 adds disable_joins: true option to has_one :through associationIn multiple database applications, associations can't join across databases. When set, Rails makes 2 or more queries rather than using join for associations.
Rails 7 adds `Enumerable#sole` to return a sole item in the enumerableEnumerable#sole returns the sole item in the enumerable and raises an exception if no items or more than one item is found.
Rails 7 adds range serializer for ActiveJobActiveJob in Rails 7 allows a range to be passed as an argument to perform method.
Rails 7 ActiveSupport::Cache::MemCacheStore now accepts an explicit nil for addresses argumentThose migrating from :dalli_store to :mem_cache_store can now pass an explicit nil for its addresses argument.