簡體   English   中英

rails 3在模型上選擇,其中where子句看起來不起作用

[英]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_typebuilding_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM