0
我试图对我的rails模型中的以下字段进行搜索:id,description,notes和customer_name。通过Rails中的id和其他字段搜索表
在我的模型TechServiceSpecial
:
def self.search(params)
q = "%#{params[:search].try(:strip).tr('%', '')}%"
#build up general search
general_search_fields.reduce(nil) do |running_query, field|
if field =~ /id/
main_check = arel_table[field].eq(q.to_i)
else
main_check = arel_table[field].matches(q)
end
if running_query.nil?
main_check
else
running_query.or(main_check)
end
end
end
private
def self.general_search_fields
%i(id description notes customer_name)
end
在我的控制器(我用雷的分页):
def search
specials = TechServiceSpecial.where(TechServiceSpecial.search(params))
@tech_service_specials = specials.page(params[:page]).per(200)
render 'index'
end
,如果我搜索使用一个id这将不记录。因此,如果我有一个ID为1005的记录,那么该记录将不会返回到“1005”的搜索结果中,除非说明,备注或客户名称中也有1005个记录。在说明,笔记或customer_name中恰好有1005的任何记录都会被返回。
所以,我调整了控制器看起来像这样:
def search
specials = TechServiceSpecial.where(TechServiceSpecial.search(params))
specials.merge(TechServiceSpecial.where(id: params[:search].to_i))
@tech_service_specials = specials.page(params[:page]).per(200)
render 'index'
end
,但我得到了相同的结果。不会返回ID为1005的记录。
如何使此返回记录的id等于我正在搜索的字符串?