ransack icon indicating copy to clipboard operation
ransack copied to clipboard

Fix issue with ransackable_attribute not handling symbols correctly

Open tatematsu-k opened this issue 1 year ago • 1 comments

Fix: https://github.com/activerecord-hackery/ransack/issues/1538

If the behavior is as intended, please close this PR.


Problem

When using the ransackable_attributes method in ActiveRecord, passing an array of symbols causes the search conditions for the corresponding attributes to be ignored. However, passing an array of strings works as expected.

Steps to Reproduce

1: Create a migration for a users table with a name column:

class CreateUsers < ActiveRecord::Migration[7.1]
  def change
    create_table :users do |t|
      t.string :name

      t.timestamps
    end
  end
end

2: Define the User model with ransackable_attributes returning a symbol array:

class User < ApplicationRecord
  def self.ransackable_attributes(auth_object = nil)
    [:name]
  end
end

3: Attempt to perform a Ransack query with a condition on the name attribute:

User.ransack(name_cont: "hoge").result.to_sql

Actual Behavior

The generated SQL query ignores the condition for name:

SELECT "users".* FROM "users"

tatematsu-k avatar Nov 21 '24 04:11 tatematsu-k

This PR has been inactive for a while. Is there anything I can do to help move it forward?

tatematsu-k avatar Oct 31 '25 06:10 tatematsu-k