我想表达与Twitter Repost System类似的内容,因此我将以此为例。所以,假设我有一个Tweet模型,我想让其他用户重新发布另一个用户的certian推文,我该如何表达这样的内容?
当我使用Tweet.all
来回收存储在数据库中的所有推文时,我认为将转发类放入推文中以便能够访问转发是一个很酷的主意,但不知怎的,我没有按预期工作...
下面的代码只是一个例子,它应该显示如何实现这一点,即使它不起作用......
任何想法我如何建立一个工作转发模型,也允许我使用Tweet.all
访问推文和转发?
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 :(得分: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