首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >has_and_belongs_to_many连接表的Rails迁移

has_and_belongs_to_many连接表的Rails迁移
EN

Stack Overflow用户
提问于 2010-12-08 04:18:15
回答 4查看 66.5K关注 0票数 123

如何执行script/generate migration来为has_and_belongs_to_many关系创建连接表?

这个应用程序运行在Rails 2.3.2上,但我也安装了Rails 3.0.3。

EN

回答 4

Stack Overflow用户

发布于 2010-12-08 04:39:18

您应该按字母顺序将表命名为要连接的两个型号的名称,并将这两个型号的id放入表中。然后,将每个模型相互连接起来,在模型中创建关联。

下面是一个例子:

代码语言:javascript
复制
# in migration
def self.up
  create_table 'categories_products', :id => false do |t|
    t.column :category_id, :integer
    t.column :product_id, :integer
  end
end

# models/product.rb
has_and_belongs_to_many :categories

# models/category.rb
has_and_belongs_to_many :products

但这不是很灵活,您应该考虑使用has_many:

票数 14
EN

Stack Overflow用户

发布于 2014-02-28 23:02:47

最上面的答案显示了一个综合索引,我认为它不会被用来从橙子中查找苹果。

代码语言:javascript
复制
create_table :apples_oranges, :id => false do |t|
  t.references :apple, :null => false
  t.references :orange, :null => false
end

# Adding the index can massively speed up join tables.
# This enforces uniqueness and speeds up apple->oranges lookups.
add_index(:apples_oranges, [:apple_id, :orange_id], :unique => true)
# This speeds up orange->apple lookups
add_index(:apples_oranges, :orange_id)

我确实找到了答案,这是基于“博士是什么”的有用的讨论,当然也是如此。

票数 6
EN

Stack Overflow用户

发布于 2014-10-16 09:45:18

在Rails4中,您可以简单地使用

create_join_table :table1,:table2

这就是全部。

注意:你必须使用字母数字的table1,table2。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4381154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档