0

Twitterのリポストシステムに似たものを実装したいので、これを例として使用します。では、Tweet モデルがあり、他のユーザーが別のユーザーの特定のツイートを再投稿できるようにしたいとしましょう。データベースに保存されているすべてのツイートを受信するために使用するときに、再投稿にもアクセスできるように、ツイートに retweet クラスを配置するのはクールなアイデアだと思いました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

重要:搬送波と互換性がある必要があります。

4

1 に答える 1

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
于 2012-07-16T15:52:19.370 に答える