我在加入表格的過程中遇到了麻煩。我在地點和列表之間有一個one_to_many關係。地點有經度和緯度,以及它的主要關鍵:郵政編碼。列表有一個標題和郵編。在兩張桌子上都需要RoR表格加入「where」
Listing.where("title LIKE ?", "%#{params[:search2]}%")
Location.where(:lat => @[email protected]_lat, :lon => @[email protected]_lon)
我基本上喜歡這兩個說法結合起來,這樣我可以一個郵政編碼,這是通過使用一系列經度和緯度的determnied給定的範圍內得到的所有信息。我無法弄清楚如何在Ruby on Rails中以這種方式做到這一點,我不需要單獨執行SQL查找並循環查看代碼中的數據以找到正確的數據。
編輯更新代碼:
@results=Location.joins(:listings).where(:listings => ["title LIKE ?", "%#{params[:search2]}%"], :locations => {:zipcode => params[:searchZip]})
SQL輸出:SELECT "locations".* FROM "locations" INNER JOIN "listings" ON "listings"."location_id" = "locations"."zipcode" WHERE ("locations"."listings" IN ('title LIKE ?', '%fish%')) AND ("locations"."zipcode" = 44012)
我不知道爲什麼它是做 「位置」, 「上市」(這給出了一個錯誤),或在IN來自。
位置是否有上市的外鍵? – eveevans
列表中有外鍵location_id將列表鏈接到某個位置。 –