我有一个Product
模型,数据库中有name
和description
列。
我还有一个Product.search_results_for(query)
,其中query
是一个类似"Green Apple"
的字符串。
我需要返回ActiveRecord::Relation
排序的结果search_result_value
。目前,我正在为每个产品设置search_result_value
。 ActiveRecord::Relation
不是数据库中的列,我不希望它成为。
所以从本质上讲,我需要Products
search_result_value
Product.order(:search_result_value)
我需要按{{1}}排序而不将其更改为数组,这是一个未存储的实例变量数据库。我怎么能这样做?
这样的事情:
{{1}}
答案 0 :(得分:6)
如果您没有将值放在列中或在纯SQL中表示search_result_value
中的逻辑,那么您必须将所有产品加载到内存中,然后使用sort_by
在Ruby中对它们进行排序:
Product.all.to_a.sort_by(&:search_result_value)