0

这个想法是用户创建条目,文本不属于一个用户,而是许多条目。当用户创建第一个条目时,会创建一个文本,但不严格属于该用户。假设 10 个人每人写一行,一篇 10 行的文本。如何编写迁移?谢谢你。

草图 -

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

一旦确定了模型之间的关联,迁移就很容易编写

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

Text
 has_many :entries

Entry
 belongs_to :user
 belongs_to :text

Entry 表将有 2 列分别用于存储用户和文本的 id(user_id 和 text_id),就是这样,您现在可以轻松地为每个模型编写迁移...

于 2012-10-26T06:05:38.823 回答
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 回答