Weekly digest of Rails codebase changes covering a new bin/rails console --no-banner flag, HTTP QUERY method support in ActionDispatch::Request, a breaking change to Relation#update that now raises RecordNotFound for out-of-scope ids, fixed Array joining in file_field_tag's accept attribute, ongoing work to make Rails ractor-safe, batched schema column reading across multiple tables, deprecation of ActiveRecord::Relation#uniq!, frozen Controller default_url_options, removal of legacy Marshal-format workarounds, a fix so missing test folders exit successfully instead of raising LoadError, a new SchemaContext abstraction for Active Record models, and a UTC fix for Time.rfc3339 parsing of 'Z' inputs. 22 contributors participated this week.
Questions this post answers
Why does relation.update(id, ...) now raise RecordNotFound in Rails when it used to just update the record?
Rails changed ActiveRecord::Relation#update and #update! to respect the scope of the relation, which is a breaking change. Previously, calling relation.update(ids, ...) with an id outside the relation's scope would still update that record; now it raises RecordNotFound instead, since the update is constrained to records matching the relation's scope. Track breaking ActiveRecord changes like this scope enforcement on daily.dev before they hit production.
How do I hide the Rails logo banner when starting the Rails console?
Run bin/rails console --no-banner to suppress the Rails logo banner that normally displays when starting the console. This flag was added as an option for developers who prefer a cleaner console startup without the ASCII logo. Follow small Rails console and CLI improvements like this one on daily.dev as they ship.
Why does Time.rfc3339 with a Z suffix now return a UTC time in Rails?
Active Support's Time.rfc3339 was updated so that parsing a timestamp ending in the Z designator now returns a proper UTC time, matching Ruby's own implementation. Before the fix, Time.rfc3339("2026-08-07T10:00:00Z") returned a time with utc? equal to false; afterward it returns a UTC time with utc? equal to true. Keep up with Active Support parsing fixes like this Time.rfc3339 change via daily.dev.