The Wire · Showcase
RAILS DEPRECATES BINDS PARAMETER, UNIFIES REMOVAL TARGET TO 9.0
By RepoJournal · Filed · About Rails
Rails is killing the `binds` positional argument across `insert`, `update`, and `delete` after moving bind parameters into the Arel AST, forcing a migration to a cleaner API before Rails 9.0.
Kamipo merged the deprecation [1] that standardizes how raw SQL and bind parameters flow through write operations. The change follows a recent restoration [1] that kept legacy callers working while the codebase moved toward `Arel.sql("... ?", value)` syntax, which wraps SQL and binds together as a single `Arel::Nodes::BoundSqlLiteral` node. This aligns with how `Model.where("... = ?", value)` already works, eliminating the split between SQL and binds at the connection level. Alongside the deprecation, Rails unified the removal target across existing deprecations to Rails 9.0 [2], replacing the split between 8.3 and 9.0 removals so runtime messages and CHANGELOG entries point at the same horizon [2]. A follow-up aligned the default `deprecation_horizon` constant to match [3]. The Rails website published the July 31 newsletter [4] covering the week's PRs and foundation news across 15 merged changes and 25 contributors.
One email a day. Unsubscribe in one click.
Keep up with Rails in about 3 minutes a day: what actually shipped — the commits, pull requests, releases, and security advisories that matter.
One email a day. Unsubscribe in one click. Read a past issue →
Action items
References
- [1] Deprecate passing `binds` to `insert`, `update`, and `delete` ↗ rails/rails
- [2] Unify deprecation removal target to Rails 9.0 rails/rails
- [3] Align default `deprecation_horizon` with the rest of the codebase rails/rails
- [4] Add July 31 Rails newsletter (#699) rails/website