我需要获取所有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
返回对象数组User
friend.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/