【问题标题】:rails geocoder gem find users that have matching addressrails geocoder gem 查找具有匹配地址的用户
【发布时间】:2015-11-07 07:56:21
【问题描述】:

我正在为我的 rails 应用程序使用地理编码器 gem,它为每个用户地址提取经度和纬度。用户的每个个人资料都有一个地址(以后还会有更多)。个人资料目前有_一个地址,并且该地址属于_个人资料。

我想要做的是搜索该区域,因此当我想搜索地址模型时,我使用了 near() 函数,该函数在控制器上运行良好。它返回给我一个 @ 实例,我可以在视图中使用它,我循环遍历结果,将 address.profile.suburb 或 .name 等从每个地址结果中提取出来。但这是在视图中完成的。

我想做的是有一个@users 的实例,因为我接下来要做的是按其他模型过滤-我有一个样式模型,如果他们检查了过滤器样式-任何具有样式和的用户都有near() 地址将返回到 @user 实例中,然后我可以在视图中使用它。

不知道该怎么做,我尝试的一切都不起作用 - 我认为它会像 User.all.profiles.address.near(params[:search])

但我还需要按未连接到地址的表中的样式进行过滤(它与用户模型有关)

或类似的东西......

感谢您的帮助。

【问题讨论】:

  • 一步一步来。它将帮助您理清思路。不要试图在活动记录中做所有事情。甚至不可能一直如此。如果您有可行的解决方案,请在此处发布,以便人们可以改进/优化

标签: ruby-on-rails ruby ruby-on-rails-3 controller


【解决方案1】:

您提供的上下文相当模糊。 Style 是一个单独的表还是 User 表中的一列?风格和用户之间有什么关联? (has_many,has_one,...)

我们的想法是将其分解为多个步骤。 假设用户 has_one 样式,params[:style] 是预期样式的 id。

你可以这样做:

@users = User.all.profiles.address.near(params[:search])
@users.joins(:style).where('styles.id = ?', params[:style])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-25
    • 2011-12-14
    • 1970-01-01
    相关资源
    最近更新 更多