Geocoder:从查询中删除了近方法?

时间:2014-04-18 23:06:24

标签: ruby-on-rails ruby ruby-on-rails-4 rails-geocoder

在Rails 4中使用Geocoder,我在尝试显示页面上的距离时遇到了问题。我有模特Kid,爸爸和妈妈。孩子属于爸爸妈妈。妈妈是基于地址或在线。

爸爸控制器

def show
  @dad = Dad.find(params[:id])
  near = Mom.near(@user_location, 5000, :select => "kids.*")
  online = Mom.where(is_online: true)    
  near = near.arel.constraints.reduce(:and)
  online = online.arel.constraints.reduce(:and)
  mom = Mom.where((near).or(online))
  @kids = @dad.kids.joins(:mom).merge(mom).order("moms.is_online DESC")
end

现在,当我尝试在视图中使用distance时:

<% @kids.each do |kid| %>
  <%= kid.mom.distance.round(0) %>
<% end %>

我收到错误:

Undefined method `distance' for #<Mom:0x9e7fc94>

调试后,我发现distance的{​​{1}}无效,因为Mom方法已消失。我不知道我能做些什么来让它再次成为near模型的一部分。我在这里看到:github.com/alexreisner/geocoder/issues/99和这里:github.com/alexreisner/geocoder#known-issue寻找一些可能的答案。关于我应该做什么的任何想法?

1 个答案:

答案 0 :(得分:1)

有趣的是,也许这不是最优雅的解决方案,但是:

<%= kid.mom.distance_to [kid.latitude, kid.longitude] %>