Always declare columns for SQL query in Rails
When ignoring a column in an ActiveRecord query you'll receive a query that declares the column names of the table explicitly versus using
What if you do not want to ignore a column to get this functionality? Rails 7 will introduce an ActiveRecord class attribute to do just this.
class Procedure < ApplicationRecord self.enumerate_columns_in_select_statements = true end
Procedure.all => SELECT "procedures"."id", "procedures"."name", "procedures"."created_at", "procedures"."updated_at" FROM "procedures"
enumerate_columns_in_select_statements is set to true, ActiveRecord SELECT queries will always include column names explicitly over using a wildcard. This change was introduced to provide consistency in query generation and avoid prepared statment issues.
Note: it can be declared at the app configuration level as well.
module MyApp class Application < Rails::Application config.active_record.enumerate_columns_in_select_statements = true end end
With that change, all ActiveRecord queries will avoid the wildcard.Tweet