テーブルを結合するときに頭が折れるのに問題があります。私は、場所とリストの間にone_to_many関係を持っています。場所には経度と緯度があり、主キーは郵便番号です。リストにはタイトルと郵便番号があります。両方のテーブルで "where"が必要なRoRテーブルの結合
Listing.where("title LIKE ?", "%#{params[:search2]}%")
Location.where(:lat => @[email protected]_lat, :lon => @[email protected]_lon)
私は基本的に私は経度と緯度の範囲を使用することによってdetermniedされる郵便番号、与えられた範囲内のすべてのリストを取得することができるように、これらの二つの文を結合したいと思います。私はRuby on Railsでこれを行う方法を理解することができません。ここでは、別の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:。
@results=Location.joins(:listings).where(:listings => ["title LIKE ?", "%#{params[:search2]}%"], :locations => {:zipcode => params[:searchZip]})
SQL出力をから来ている。
ロケーションにはリスティングの外部キーがありますか? – eveevans
リストには、場所にリスティングをリンクするための外部キー(location_id)があります。 –