我有一个对象数组,我需要根据子对象average_score
属性对它们进行排序。我试着sort!
但这似乎并没有工作,我不知道我可以在这里使用Rails的协会:按子对象排序对象数组
collection.sort! do |a, b|
a.children.where(:user_id => current_user.id).first.average_score <=> b.children.where(:user_id => current_user.id).first.average_score
end
任何人都可以建议我如何才能做到这一点?
你期望的结果是什么结果呢?或者你得到一个错误? – 2012-03-21 20:49:11
你应该使用sort_by,但Ruby会慢得多,SQL ... – tokland 2012-03-21 20:49:54
我希望它根据孩子的average_score排序集合。我得到的错误是'nil:NilClass'的未定义方法'average_score'。我认为这是因为集合中的一些对象没有孩子,所以我试图允许零结果,但零成功 – DanS 2012-03-21 20:51:59