[英]rails 3 Select on model with where clauses doesn't look to works
我有一個搜索引擎控制器可以進行高級搜索。 這是我的控制器。
@search = Building.joins('INNER JOIN "floors" ON "floors"."building_id" = "buildings"."id" INNER JOIN "spaces" ON "spaces".floor_id = "floors".id')
@building = []
@building << @search.where("buildings.name like ?", params[:building_name]) if params[:building_name]
@building << @search.where("Spaces.space_type_id = ?", params[:space_type][:space_type_id]) if params[:space_type][:space_type_id]
@building.flatten!
但是,在我的WEBrick外殼程序中,我看到他只在最后一個位置執行。 我在參數building_name和space_type中有數據。
我將此示例用於另一個stackoverflow(我不記得鏈接了)。 但是,如果我刪除第二個位置,則使用building_name。
怎么了? 我的@building數組定義不正確?
謝謝
我認為這里正在發生的事情是您存儲了兩個ActiveRecord::Relation
,但是rails實際上並沒有得到結果。 結果,拼合無法正常工作。
問題是否要獲取所有名稱如building_name或space_type
或building_name
AND space_type
building_name
。 下面的解決方案假定使用后者,請讓我知道是否使用前者。
您可以嘗試一下:
@search = Building.joins('INNER JOIN "floors" ON "floors"."building_id" = "buildings"."id" INNER JOIN "spaces" ON "spaces".floor_id = "floors".id')
@search = @search.where("buildings.name like ?", params[:building_name]) if params[:building_name]
@search = @search.where("Spaces.space_type_id = ?", params[:space_type][:space_type_id]) if params[:space_type][:space_type_id]
@building = @search
這應該根據每個條件來限定查詢的范圍,但僅在需要時才返回值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.