我目前正在使用此tutorial进行搜索。一切都很好,我能够从两个不同的表(学校和区)搜索各种资源。
但是,我目前正在从我的控制器调用两个单独的搜索方法,并将搜索结果合并到我的控制器中的一个数组中。
无论如何要将我的模型中的代码组合起来?
搜索控制器
def show
@search = Search.find(params[:id])
@searches = []
///Calls two separate search methods from my model and combines the results.
(@searches << @search.district_resources).flatten!
(@searches << @search.school_resources).flatten!
@searches = @searches.uniq
respond_to do |format|
format.json { render :json => @searches.to_json }
end
end
方法
//How can I combine this code to search for values in both tables?
def district_resources
@district_resources ||= find_district_resources
end
def school_resources
@school_resources ||= find_school_resources
end
def find_school_resources
school_resources = SchoolResource.order(:name)
school_resources = school_resources.where(state_id: state_id) if state_id.present?
end
def find_district_resources
district_resources = DistrictResource.order(:name)
district_resources = district_resources.where(state_id: state_id) if state_id.present?
end
答案 0 :(得分:1)
只需在模型中添加新方法:
def district_and_school_resources
(district_resources + school_resources).uniq.sort_by(&:name)
end
并在你的控制器中使用它:
def show
resources = Search.find(params[:id]).district_and_school_resources
respond_to do |format|
format.json { render :json => resources.to_json }
end
end