我的用户模型中有一个距离属性:
attr_accessor :distance因此,当我计算每个用户的距离,并将其存储在远处时,我可以对它们排序如下:
users.sort_by!(&:distance)并根据距离对用户进行适当的排序。但当我包括其他相关方法时,即:
users.includes(:photo).sort_by!(&:distance)这根本不对用户进行排序,这是为什么?我怎样才能用距离来分类,但也包括关联呢?
发布于 2014-01-31 15:39:26
!方法中的sort_by!指示对象本身被更改,而不是返回不同的对象。当您调用users.includes(:photo)时,此方法返回一个不同的对象。所以,你实际上所做的是:
users2 = users.includes(:photo)
users2.sort_by!(&:distance)这就是为什么在调用sort_by!之后用户对象没有排序的原因。一个更好的方法可能是
users = users.includes(:photo).sort_by(&:distance)https://stackoverflow.com/questions/21483220
复制相似问题