Necesito obtener todos los estados del usuario_actual.amigos y luego ordenarlos por created_at.Rieles: la comparación del estado con el estado falló
class User < ActiveRecord::Base
has_many :statuses
end
class Status < ActiveRecord::Base
belongs_to :user
end
Y en el controlador:
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
devuelve una matriz de objetos User
friend.statuses
devuelve una matriz de objetos Status
Error:
comparison of Status with Status failed
app/controllers/welcome_controller.rb:10:in `sort!'
app/controllers/welcome_controller.rb:10:in `index'
su problema central pero caminar todas esas asociaciones le matará por el gran número de consultas. Agarrar a todos los amigos y todos sus estados y luego ordenarlos en código puede generar una cantidad impía de consultas, tu rendimiento disminuirá rápidamente. ¿Por qué no simplemente escribir una sola consulta SQL que pueda buscar y ordenar todos esos registros a la vez? –
Gracias, encontré una manera fácil y efectiva: 'Status.where (user_id: current_user.friends.map (&: id) .insert (0, current_user.id)). All' ¿qué opinas? – Alex