Ruby on rails 模型的Rails查询部分

Ruby on rails 模型的Rails查询部分,ruby-on-rails,ruby,activerecord,model,Ruby On Rails,Ruby,Activerecord,Model,我将如何进行这样的查询。 我有 现在我想过滤另一个模型,它与上面的模型关联。 (帮助我找到正确的方法) model.rb是这样的 has_many :model2s model2.rb belongs_to :model 我在轨道3上 现在是这样的(在@model=model.near([纬度,经度],6.8)之后) 我想完成同样的事情,但要使用活动记录查询 我找到了我问题的部分答案。它仍然包含了我不满意的旧方法 models.each do |model| models-model

我将如何进行这样的查询。 我有

现在我想过滤另一个模型,它与上面的模型关联。 (帮助我找到正确的方法)

model.rb是这样的

has_many :model2s
model2.rb

belongs_to :model
我在轨道3上

现在是这样的(在@model=model.near([纬度,经度],6.8)之后)

我想完成同样的事情,但要使用活动记录查询

我找到了我问题的部分答案。它仍然包含了我不满意的旧方法

models.each do |model|
   models-model2s = Model2.where("model_id => :modid",{:modid => model.id})
   model2 += model
end
但这是一种愚蠢的方法,玩弄塔德曼的方法向我展示了model.model2s是一个我可以执行的命令(我忘记了),所以

这并不完全是我想要的,但我会一直使用它,直到我看到更好的东西

我想我找到了什么,为什么失败了

Model2.where("model.distance_from([:latitude,:longitude]) < :dist", {:latitude => latitude, :longitude => longitude, :dist => 6.8})
Model2.where(“model.distance_from([:纬度,:经度])<:距离”,{:纬度=>纬度,:经度=>经度,:距离=>6.8})
此查询引发此错误

SQLite3::SQLException: near "(": syntax error: SELECT "tags".* FROM "tags"  WHERE (model.distance_from([43.45101666666667,-80.49773333333333]) < 6.8)
SQLite3::SQLException:near“(”:语法错误:选择“tags”。*FROM“tags”WHERE(model.distance_FROM([43.4510166667,-80.49773333])<6.8)

,为什么

您可能会幸运地间接检索到第二种类型的模型:

@models = Model.near([ latitude, longitude ], 6.8).includes(:model2s)
这将预加载所有“Model2”

或者您可以尝试翻转它并直接检索Model2,但您必须能够以其他方式表达
附近的
条件:

@model2s = Model2.includes(:model).where('models.x' => ...)

抱歉-第二行代码应该做什么?我理解有困难。@Nick编辑了上面的问题,请参阅again@Nick检查我的最新问题
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)
@models = Model.near([ latitude, longitude ], 6.8).includes(:model2s)
@model2s = Model2.includes(:model).where('models.x' => ...)