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