159 wires and counting

$ follow Rails

Keep up with Rails in about 3 minutes: what actually shipped — the commits, pull requests, releases, and security advisories that matter.

or

fair warning: these emails are deeply technical. diffs, version numbers, CVEs, benchmark deltas. if that's not your idea of a good read, this isn't your newsletter.

Folds into your digest — weekly by default, monthly if you prefer. Unsubscribe in one click.

$ status

wire 2026-10-13
stories 10

© 2026 RepoJournal Home Showcase How it works Privacy

$ the-wire · showcase

Composite foreign keys and abstract-class constraints get fixed across Rails and GlobalID

By RepoJournal · Filed · About Rails · Composed from the cited sources · methodology

Three Rails fixes land on the composite-key and abstract-class edges of Active Record, while GlobalID stops letting one malformed GID take down an entire batch.

Skip GIDs with a mismatching model_id in Locator.locate_many rails/globalid

by afurm

Locator.locate_many used to raise NoMethodError when a GID's id count didn't match the model's primary key, so a single malformed GID such as gid://app/Person/1/2 broke the entire batch and surfaced as RecordUnavailable rather than RecordNotFound. The fix uses dig to skip invalid GIDs, bringing locate_many in line with locate, which already returned nil for them.

Fix query constraints on abstract classes rails/rails

by Americo Duarte

Since the query_constraints_list change, reading that list loads the schema, so an abstract class with explicit query_constraints raised ActiveRecord::TableNotSpecified and broke associations declared on it, because AssociationReflection#foreign_key needs the list to derive the composite key. Concrete models with explicit query_constraints also loaded their schema just to answer foreign_key.

Fix disable_joins through associations with a composite owner foreign key rails/rails

by Federico Carrocera

DisableJoinsAssociationScope#last_scope_chain read the owner's key with owner.read_attribute on the first hop's join foreign key, which returns nil when that key is composite and made loading the association raise ArgumentError: Expected corresponding value for [...] to be an Array. It now reads the value through ActiveRecord::Key.for(...).value_of(owner), which walks every column of a composit...

Extract ActiveSupport::WeakSet as an internal API rails/rails

by byroot

byroot extracted ActiveSupport::WeakSet as an internal API. It is plumbing for the framework rather than a public surface.

Quick answers

What shipped in Rails on October 13, 2026?
Three Rails fixes land on the composite-key and abstract-class edges of Active Record, while GlobalID stops letting one malformed GID take down an entire batch. In total, 7 commits and 3 pull requests landed.
Who contributed to Rails on October 13, 2026?
4 developers shipped this update, including byroot, Americo Duarte, Federico Carrocera, and afurm.
What were the notable Rails updates?
Skip GIDs with a mismatching model_id in Locator.locate_many, Fix query constraints on abstract classes, and Fix disable_joins through associations with a composite owner foreign key.