我使用 ransack gem 并且我有一個選擇欄位event_id,它可以是字串或陣列,例如: 90 或 [ 145, 147, 148 ]
我的代碼在傳入陣列時回傳錯誤:
ransack("job_name_cont" => job_name, "event_id_eq" => event_id).result
[1] pry(Job)> ransack("job_name_cont" => job_name, "event_id_eq" => event_ids).result
NoMethodError: undefined method `to_i' for [145, 147, 148]:Array
Did you mean? to_s
to_a
to_h
我的型號:
class Job < ActiveRecord::Base
belongs_to :event
end
class Event < ActiveRecord::Base
has_many :jobs, dependent: :destroy
end
如何使用 event_id is array 進行搜索?
uj5u.com熱心網友回復:
如果您查看Ransack 的搜索匹配器,您會看到一個帶有 的*_in - match any values in array,如果您想在陣列中搜索,這正是您所需要的。
因為您event_ids可以以字串或陣列的形式出現并且*_in需要和陣列,所以我們必須確保我們始終為它提供一個陣列。
[event_ids].flatten # returns an array all the time
下面的查詢現在應該可以正常作業了。
ransack("job_name_cont" => job_name, "event_id_in" => [event_ids].flatten).result
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/360738.html
上一篇:批處理腳本|命令運行時閃爍螢屏
