2

RailsでTwitterのようなデータモデルを構築しようとしています。これが私が思いついたものです。

class User < ActiveRecord::Base
  has_many :microposts, :dependent => :destroy
end

class Micropost < ActiveRecord::Base
  belongs_to :user
  has_many :mentions
  has_many :hashtags
end

class Mention< ActiveRecord::Base
  belongs_to :micropost
end

class Hashtag < ActiveRecord::Base
  belongs_to :micropost
end

どこかで関連付けを通じてhas_manyを使用する必要がありますか、それともこれは正確ですか?

編集:最終的なTwitterMVCモデル。

class User < ActiveRecord::Base
  has_many :microposts, :dependent => :destroy

  userID
end

class Micropost < ActiveRecord::Base
  belongs_to :user

  has_many :link2mentions, :dependent => :destroy
  has_many :mentions, through: :link2mentions

  has_many :link2hashtags, :dependent => :destroy
  has_many :hashtags, through: :link2hashtags

  UserID
  micropostID
  content
end

class Link2mention < ActiveRecord::Base
    belongs_to :micropost
    belongs_to :mention

    linkID
    micropostID
    mentionID
end

class Mention < ActiveRecord::Base
  has_many :link2mentions, :dependent => :destroy
  has_many :microposts, through: :link2mentions

  mentionID
  userID
end

編集2:簡潔で正確な説明

http://railscasts.com/episodes/382-tagging?view=asciicast

4

1 に答える 1

1

2 つのマイクロポストが同じハッシュタグを使用している場合、おそらくそのハッシュタグに対して 2 つのデータベース レコードを作成したくないでしょう。この場合、次を使用しますhas_many through

class Hashtagging < ActiveRecord::Base
  belongs_to :micropost
  belongs_to :hashtag
end

class Hashtag < ActiveRecord::Base
  has_many :hashtaggings
  has_many :microposts, through: :hashtaggings
end

class Micropost < ActiveRecord::Base
  ...
  has_many :hashtaggings
  has_many :hashtags, through: :hashtaggings
end

Hashtagging移行を作成するときは、列micropost_idhashtag_id列があることを確認してください。

于 2013-01-01T10:49:25.253 に答える