Rails Ransack gem: 在一个条件下搜索多个值
Rails Ransack gem: search for multiple values with one condition
我使用 ransack gem 并且我有一个 select 字段 event_id
可以是字符串或数组,例如:90 或 [ 145, 147, 148 ]
我的代码,returns传入数组时出错:
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 数组进行搜索?
如果您查看 Ransack's Search Matchers,您会看到带有 *_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
我使用 ransack gem 并且我有一个 select 字段 event_id
可以是字符串或数组,例如:90 或 [ 145, 147, 148 ]
我的代码,returns传入数组时出错:
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 数组进行搜索?
如果您查看 Ransack's Search Matchers,您会看到带有 *_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