Rails 4创建连接表不需要在迁移中添加主键吗?

时间:2013-11-16 02:36:31

标签: ruby-on-rails rails-migrations

我使用这个命令:

 rails g migration CreateJoinTableUserPloy user ploy

我检查了迁移文件:

    create_join_table :Users, :Posts do |t|
      #t.index [:user_id, :ploy_id]
      #t.index [:ploy_id, :user_id]
    end

有两个索引被defualt评论。

然后我运行这个命令:

rake db:migrate

然后我检查我的数据库结构

我没见过主键,这是否意味着连接表不需要在数据库结构中添加索引和主键?

1 个答案:

答案 0 :(得分:4)

http://meta.serverfault.com/a/1931一致,即使有些信息在评论主题中,我也会回答这个问题。

Rails生成的连接表中没有主键(即由create_join_table创建,其名称中的JoinTable迁移使用),Rails没有固有的要求。这是因为大多数纯连接表只能通过连接表的id访问,在这种情况下,primary_key是不必要的。当然,如果愿意,您可以添加和指定主键列。

Rails 支持多列primary_keys,尽管有多个gem提供该支持,例如https://github.com/composite-primary-keys/composite_primary_keys

此外,没有必要创建索引。如果您愿意,您可以创建一个,它将加快对记录的访问,但需要花费一些额外的时间来创建和更新记录。有关详细信息,请参阅https://stackoverflow.com/a/3658980/1008891