ブログアプリケーションでdefault_scopeを設定して、インデックスがモデルで定義されたアルゴリズムによってエントリを並べ替えるにはどうすればよいですか?
以下に示すように、ランキングアルゴリズムにHackerNewsのような式を使用する場合、モデルでどのように定義できますか?
total_score = (votes_gained - 1) / (age_in_hours + 2)^1.5
votes_gained変数はActive_Record_Reputation_Systemに依存しており、私の見解では次のように記述されています。
votes_gained = @post.reputation_value_for(:votes).to_i
最後に、age_in_hoursは非常に簡単です
age_in_hours = (Time.now - @post.created_at)/1.hour
これらの数字を使用してブログ投稿のインデックスを注文するにはどうすればよいですか?モデルを正しく定義total_score
して、デフォルトのスコープに追加できるようにする方法を模索してきましたdefault_scope order("total_score DESC")
。直接置換は機能せず、数式の各部分を「言い換える」方法がわかりません。
どのくらい正確に定義する必要がありますtotal_score
か?あなたの洞察に感謝します!