0

アイデアは、ユーザーがエントリを作成し、テキストが 1 人のユーザーに属しているのではなく、多くのエントリに属しているということです。ユーザーが最初のエントリを作成すると、テキストが作成されますが、厳密にはユーザーに属していません。10 行の 1 つのテキストに対して、10 人がそれぞれ 1 行を書いていると考えてください。移行はどのように記述すればよいですか? ありがとうございました。

スケッチ -

User
  has many entries
  (has many texts, entries through texts?)

Text
  has many entries

Entry
  belongs to text
  belongs to user

# updated...
User
 has_many :entries
 has_many :texts, :through => :entries

Text
 has_many :entries
 has_many :users, :through => :entries

Entry
 belongs_to :user
 belongs_to :text
4

2 に答える 2

1

上記のモデルの関連付けに一致する基本的な移行は次のようになります

create_table :users do |t|
  # User Fields
  t.timestamps
end

create_table :texts do |t|
  # Text Fields
  t.timestamps
end

create_table :entries do |t|
  # Entry Fields
  t.integer :user_id
  t.integer :text_id
  t.timestamps
end

:entriesまた、テキスト内のエントリを並べ替えるために、テーブルに追加のフィールドが必要になる場合があります(アプリケーションによって異なります)。

于 2012-10-26T10:11:13.403 に答える
1

モデル間の関連付けを決定すると、移行は非常に簡単に記述できます

User
 has_many :entries
 has_many :texts, :through :entries

Text
 has_many :entries

Entry
 belongs_to :user
 belongs_to :text

Entry テーブルには、ユーザー ID とテキスト ID をそれぞれ格納するための 2 つの列 (user_id と text_id) があり、これで各モデルの移行を簡単に記述できるようになりました...

于 2012-10-26T06:05:38.823 に答える