2011-09-24 35 views
0

我在我的網站上有多個模型。有建議和項目以及交易。導軌設計問題 - 「現在熱右」

我創建了一個模板,它顯示了現在什麼是熱門。我希望能夠將這個應用到上面提到的所有3個模型中,並想知道處理它的最佳方法。

很明顯,我可以在每個模型上添加「hotness_score」,然後運行cron以每小時更新一次hotness分數(通過我自己的算法)。然而,不便之處在於,如果我想在我的網站上顯示前十名最熱門的事物,我可能需要從每個對象中取出前十名最熱門的對象,然後將它們排序在內存中。 (儘管我可以緩存它們,但聽起來並不令人愉快)。

我也想過創建一個新的模式,又稱辣味,它具有以下屬性:

  1. 類型
  2. OBJECT_ID
  3. hotness_score
  4. LAST_UPDATED

好關於這個的事情是,我只需要查詢Hotness order_by'hotness_score DESC'.limit(10),我就可以得到所有組合的第10頁。

你認爲這是一個很好的實現嗎?你看到這個問題嗎?

有人可以提供一些見解,以更好地解決這個問題嗎?我歡迎所有的建議。

回答

0

是的,我認爲你在談論的是一個多態模型。這是在Rails中這樣做的一個非常標準的方式:

create_table :hot_things do |t| 
    t.column :item, :polymorphic => true # item_id, item_type 
    t.column :score 
    t.timestamps 
end 

class HotThing < ActiveRecord::Base 
    belongs_to :item, :polymorphic => true 
end 

類似的東西?