Tôi cần tìm nạp tất cả trạng thái current_user.friends và sau đó sắp xếp chúng theo created_at.Đường ray: so sánh Trạng thái với Trạng thái không thành công
class User < ActiveRecord::Base
has_many :statuses
end
class Status < ActiveRecord::Base
belongs_to :user
end
Và trong bộ điều khiển:
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
trả về một mảng các đối tượng User
friend.statuses
trả về một mảng các đối tượng Status
Lỗi:
comparison of Status with Status failed
app/controllers/welcome_controller.rb:10:in `sort!'
app/controllers/welcome_controller.rb:10:in `index'
Không phải vấn đề cốt lõi của bạn nhưng đi bộ tất cả các liên kết đó sẽ giết bạn bởi số lượng truy vấn tuyệt đối. Nắm bắt tất cả bạn bè và tất cả các trạng thái của họ và sau đó sắp xếp chúng trong mã có thể mang lại một số truy vấn không đúng, hiệu suất của bạn sẽ giảm nhanh chóng. Tại sao không chỉ viết một truy vấn SQL đơn lẻ mà có thể lấy và sắp xếp tất cả các bản ghi đó cùng một lúc? –
Cảm ơn bạn, tôi đã tìm thấy một cách dễ dàng và hiệu quả: 'Status.where (user_id: current_user.friends.map (&: id) .insert (0, current_user.id)). All' bạn nghĩ sao? Lỗi – Alex