【问题标题】:How to model User, Text, Entry tables in rails如何在 Rails 中建模用户、文本、条目表
【发布时间】:2012-10-26 18:11:13
【问题描述】:

这个想法是用户创建条目,文本不属于一个用户,而是许多条目。当用户创建第一个条目时,会创建一个文本,但不严格属于该用户。假设 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

【问题讨论】:

    标签: ruby-on-rails data-modeling


    【解决方案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 表中的其他字段来对文本中的条目进行排序(取决于您的应用程序)。

    【讨论】:

      【解决方案2】:

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

      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),就是这样,您现在可以轻松地为每个模型编写迁移...

      【讨论】:

      • 文本表呢?文本条目?我该怎么写?
      • 如果文本是由用户创建的,那么您应该在您的文本表中再添加一行作为 belongs_to :user ,然后您的文本表将有一列 (user_id) 存储用户的 id。 ..
      • 您会查看我的更新并帮助我编写迁移吗?我不清楚文本表是什么样的,或者是否有一个文本表,只有一个条目表?当用户创建一个“新”条目时,它会在条目上设置一个新的 text_id 吗?感谢您的帮助。
      猜你喜欢
      • 2016-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-30
      • 2013-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多