1
我已經用兩種不同模型填充了一個散列。然後,我嘗試將它們像這樣排序:Rails:對來自不同模型的對象進行排序
@search_results = User.find(:all, :conditions => ['name LIKE ?', "%#{params[:query]}%"])
@search_results += Book.find(:all, :conditions => ['title LIKE ?', "%#{params[:query]}%"])
@search_results.sort! { |a,b| a.impressions_count <=> b.impressions_count }
這引發以下錯誤:
comparison of User with Book failed
用戶和書有一個基於整數impressions_count。爲什麼我不能通過這個屬性排序?我還有什麼其他選擇?
經過這一些修補後,我幾乎有它的工作。 (我希望。)唯一的問題是它傳遞零值。什麼可能導致這種情況?我懷疑它與「some_attribute_of_book」有關,儘管我不知道該如何放置它。 – nullnullnull 2012-07-17 22:26:47
some_attribute_of_book只是一個例子,說明如果它不在另一個模型中,可以將字段檢索爲NULL。由於你必須在兩個表中都有一個字段才能使聯合工作。所以,如果你不需要像這樣的東西,你可以將其刪除,否則替換爲任何你想從書桌上撤回的字段,反之亦然。希望有幫助 – 2012-07-17 22:37:34
我不再得到零結果,但散列仍然是空的。即使我把它縮小到這個:User.find_by_sql([「SELECT name FROM users WHERE name LIKE?」,params [:query]]) – nullnullnull 2012-07-17 23:04:32