2012-07-16 14 views
0

我想暗示一些與Twitter轉發系統類似的東西,因此我將以此爲例。假設我有一個Tweet模型,並且我想允許其他用戶重新發布另一個用戶的推特推文,我該如何推崇這樣的內容? 我認爲如果我使用Tweet.all收回存儲在數據庫中的所有推文時,將轉推類放入推文中以便能夠訪問轉發帖,但我不會按預期方式工作,所以我認爲自己會很酷...... 下面的代碼就是應該展示如何impliment這樣的一個例子,即使它是不工作... 任何想法如何,我可以建立一個工作模型轉貼這也讓我用Tweet.all來訪問鳴叫和銳推?帶Datamapper的「轉推」

class Tweet 
    class Retweet 
    include DataMapper::Resource 

    belongs_to :user, key => true 
    belongs_to :tweet, key => true 
    end 

    include DataMapper::Resource 
    property :text, String 
    property :timestamp, String 

    belongs_to :user 
end 

重要提示:我應該carrierwave兼容。

回答

0
class Tweet 
    include DataMapper::Resource 
    property :id, Serial 
    has n, :retweets, 'Tweet', :child_key => :parent_id 
    belongs_to :parent, 'Tweet', :required => false 
    belongs_to :user 

    def is_retweet? 
    self.parent_id ? true : false 
    end 
end 

original = Tweet.create :user => user1 
retweet = Tweet.create :parent => original, :user => user2 
retweet.is_retweet? # => true 
+0

不幸的是,這不適用於carrierwave:/你知道一個解決方案,與載波一起工作嗎? – 2012-08-05 15:10:58