我需要获取所有current_user.friends状态,然后按created_at对其进行排序。

class User < ActiveRecord::Base
 has_many :statuses
end

class Status < ActiveRecord::Base
 belongs_to :user
end

并在 Controller 中:
def index
    @statuses = []
    current_user.friends.map{ |friend| friend.statuses.each { |status| @statuses << status } }
    current_user.statuses.each { |status| @statuses << status }

    @statuses.sort! { |a,b| b.created_at <=> a.created_at }
end
current_user.friends返回对象数组Userfriend.statuses返回对象数组Status
错误:
comparison of Status with Status failed
app/controllers/welcome_controller.rb:10:in `sort!'
app/controllers/welcome_controller.rb:10:in `index'

最佳答案

我有一个类似的问题,使用to_i方法解决了,但是无法解释为什么会发生这种情况。

@statuses.sort! { |a,b| b.created_at.to_i <=> a.created_at.to_i }

顺便说一下,这按降序排序。如果要升序为:
@statuses.sort! { |a,b| a.created_at.to_i <=> b.created_at.to_i }

关于ruby-on-rails - Rails:状态与状态比较失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12077180/

10-09 06:49