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等於我正在搜索的字符串?