if/then
ソート順にある種のセマンティクスを使用してソートする方法があるかどうか疑問に思っています。
私が対処しようとしている基本的な要件は次のとおりです。
- 私のレコードには、contact_again_time時間属性があります
nil
。 - リストは、存在するすべてのレコード
contact_again_time
が最初にcontact_again_time
降順で並べ替えられるように並べ替える必要があります。 - 残りの
contact_again_time
nilは、created_atで昇順で並べ替える必要があります。
ですから、頭のてっぺんから、次のsearchable
ように表示することで、注文フィールドをインデックスに具体化することで、これを解決できます。
integer :sort_key do
contact_again_time.nil? ? (created_at.to_i * -1) : contact_again_time.to_i
end
そして、order_by(:sort_key, :desc)
私が欲しいものを手に入れるために。しかし、このようにして、ソートロジックの一部をモデル内に配置し、さらに重要なことにLuceneインデックス内に配置しています。
かなり気分が悪いので避けたいもの。