如果我想在一组列中搜索值,那么我可以这样做:
MyModel.where do
col1.matches("%#{search[:search_key]}%") | col2.matches("%#{search[:search_key]}%") | ...
end
但是当我想搜索表的所有列时,没有必要在我的查询中明确地命名它们吗?因为否则每次我向数据库添加一列时,我都必须将它添加到我的搜索查询中。
有没有办法只搜索表的所有列中的值。所以像这样:
MyModel.search_all_columns(search[:search_key])
基本上是什么角度滤波器。
答案 0 :(得分:0)
MyModel.where do
MyModel.columns.map do |col|
col.matches("%#{search[:search_key]}%")
end.reduce :|
end
或使用ActiveRecord::Base#column_names
构建查询。