Ios 仅当传入位置参数时,才向模型添加距离属性访问器
我目前正在从事rails后端的工作,该后端与web和iOS前端都有关联。在iOS端,我们目前正在输入纬度和经度,然后计算到服务器上最近对象的距离 我的问题是,在我的控制器中,在为iOS呈现json之前,我必须循环遍历每个对象并添加Ios 仅当传入位置参数时,才向模型添加距离属性访问器,ios,ruby-on-rails,geolocation,Ios,Ruby On Rails,Geolocation,我目前正在从事rails后端的工作,该后端与web和iOS前端都有关联。在iOS端,我们目前正在输入纬度和经度,然后计算到服务器上最近对象的距离 我的问题是,在我的控制器中,在为iOS呈现json之前,我必须循环遍历每个对象并添加对象[:distance]=distance\u计算,如果参数[:latitude]&¶ms[:longitude] 我在添加这样的任意属性时会收到折旧警告,我认为我可以做得更好。我曾考虑在对象上添加一个attr\u accessor:distance,但我无法
对象[:distance]=distance\u计算,如果参数[:latitude]&¶ms[:longitude]
我在添加这样的任意属性时会收到折旧警告,我认为我可以做得更好。我曾考虑在对象上添加一个attr\u accessor:distance
,但我无法基于模型中的参数设置此值,因为模型没有参数访问权限,所以我仍然必须在json呈现之前执行循环
如有任何建议,将不胜感激!谢谢 我不明白你为什么要在模型上设置距离。。。iOS客户端正在发送一个由lat和long定义的位置,您要做的到底是什么 你的物体已经被地理定位了,对吗?否则,您将如何确定最近的值 但无论如何,要回答您关于在模型上设置距离的问题,请使用
attr\u访问器
,如您所说:
class Model < ActiveRecord::Base
attr_accessor :distance
end
如果您有地理定位模型并试图计算距离等,您可能希望使用gem之类的工具。对象已经地理定位,iOS客户端需要从其当前位置到这些对象的距离。我已经完成了地理位置距离的计算,我只是好奇是否有一种方法可以返回距离,而不必在控制器中循环通过每个对象。我现在想的越多,我不知道还有什么其他的方法。也许这就是你正在做的,但是你应该先找到最近的物体,然后通过它们循环得到距离。因为假设你有一百万个对象,你不可能在这个庞大的集合中加载和迭代;)罗宾,是的,我们的地理定位宝石一次只能返回30颗。谢谢在controller动作中,我在respond to块中呈现json
object.distance = distance_calculation if params[:latitude] && params[:longitude]