Ho bisogno di recuperare tutti gli stati current_user.friends e poi ordinarli per created_at.Rails: confronto Stato con stato non riuscito
class User < ActiveRecord::Base
has_many :statuses
end
class Status < ActiveRecord::Base
belongs_to :user
end
E nel 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
restituisce un array di oggetti User
friend.statuses
restituisce un array di oggetti Status
Errore:
comparison of Status with Status failed
app/controllers/welcome_controller.rb:10:in `sort!'
app/controllers/welcome_controller.rb:10:in `index'
Non il tuo problema principale, ma camminare tutte quelle associazioni ti ucciderà per il numero di query. Afferrare tutti gli amici e tutti i loro stati e quindi ordinarli in codice può produrre un numero improprio di query, la tua esibizione scenderà rapidamente. Perché non scrivere solo una singola query SQL in grado di recuperare e ordinare tutti quei record contemporaneamente? –
Grazie, ho trovato un modo semplice ed efficace: 'Status.where (user_id: current_user.friends.map (&: id) .insert (0, current_user.id)). Tutto ciò che ne pensi? – Alex