どうすればこのようなクエリを実行できますか? 私はRailsのアクティブレコードクエリ
@model = Model.near([latitude, longitude], 6.8)
は、今私は上記1に関連付けられている別のモデルを、フィルタリングする必要があります。 (これを行うための正しい方法を得ることで私を助けて)
model2 = Model2.where("model_id == :one_of_the_models_filtered_above", {:one_of_the_models_filtered_above => only_from_the_models_filtered_above})
model.rbは今それがこの
has_many :model2s
ようmodel2.rb
belongs_to :model
だろうこのように(@model = Model.nearの後([緯度、経度]、6.8)
model2s =[]
models.each do |model|
model.model2s.each do |model2|
model2.push(model2)
end
end
代わりに、私は同じことを達成したい
が、アクティブレコードクエリと
私が何かを見つけたと思う、なぜこれが
Model2.where("model.distance_from([:latitude,:longitude]) < :dist", {:latitude => latitude, :longitude => longitude, :dist => 6.8})
を失敗しないこのクエリは
SQLite3::SQLException: near "(": syntax error: SELECT "tags".* FROM "tags" WHERE (model.distance_from([43.45101666666667,-80.49773333333333]) < 6.8)
このエラーがスローされます
、理由
で "IN"節を使用できますか? Model2.where( "model_id in?"、@models) 'と似ています。 2番目の部分では、distance_fromに配列を渡そうとしていますか? distance_fromメソッドを呼び出す代わりに、クエリで使用できる値を含む属性をモデルに含めることはできますか? – aishwarya
SQLiteのSQLの風味に 'distance_from'を実装するか、それを実装するためのユーザ定義関数を追加する必要があります。 –
'join 'を使用して、モデルのクエリで一致するすべてのModel2オブジェクトを選択できます –