1

我即將爲正在處理的個人項目添加+1 /喜歡功能。我想知道這個數據庫設計的外觀。我不想有幾個像桌子一樣的桌子來處理網站上的所有喜歡。我希望能夠在創建或隨意「插入」網站的不同部分。如何在Rails應用程序的ruby中實現likes/+ 1類功能?

E.G.

微觀柱 - 用戶應該能夠「喜歡」微柱

照片 - 用戶應能夠「像」的照片

比方說,我創建了一個遊戲部分,並希望用戶能夠像遊戲我希望能夠使用現有的喜歡錶而不是爲遊戲創建喜歡錶。

在我的腦海裏,我在考慮acts_as_tree插件將會非常有用,但是可以將事情保持在一個喜歡桌子的地方,在一段時間後會變得雜亂無章?

如何以最明智的可擴展方式將喜歡的功能添加到我的應用程序?

回答

1

看看polymorphic associations
鏈接中的示例提供了有關評論的討論,但我認爲你需要與喜歡相同的東西。

class Like < ActiveRecord::Base 
    belongs_to :likable, polymorphic: true 
end 

class Micropost < ActiveRecord::Base 
    has_many :likes, as: :likable 
end 

class Post < ActiveRecord::Base 
    has_many :likes, as: :likable 
end 

在這裏,你的Post和Micropost類都可以有喜歡的。你可以添加一些你想要的任何類。

你甚至可以做Like.all,併爲每個類似的,得到與like.likable相關的對象(Post或Micropost)。

1

你應該有一個 「贊」 模型什麼的,有,至少,這個協會: belongs_to的:用戶 belongs_to的:liked_object,多態=>真

現在你可以做

Like.create :liked_object => micropost, :user => current_user 

,並在未來

Like.create :liked_object => game, :user => current_user 

搜索多態關聯(你可能需要一個liked_object_type和liked_object_id在你的遷移中)

相關問題