生成迁移-创建连接表

我已经查看了许多 SOgoogle的职位生成连接表的移植为 has many and belongs to many关联,没有工作。

所有的解决方案都会生成一个空的迁移文件。

我使用的是 rails 3.2.13,我有两个表: security_usersassignments:

rails generate migration assignments_security_users


rails generate migration create_assignments_security_users


rails generate migration create_assignments_security_users_join_table


rails g migration create_join_table :products, :categories (following the official documentation)


rails generate migration security_users_assignments security_user:belongs_to assignments:belongs_to

有人知道如何在两个表之间创建联接表迁移吗?

74163 次浏览

运行这个命令来生成空的迁移文件(它不是自动填充的,您需要自己填充它) :

rails generate migration assignments_security_users

打开生成的迁移文件并添加以下代码:

class AssignmentsSecurityUsers < ActiveRecord::Migration
def change
create_table :assignments_security_users, :id => false do |t|
t.integer :assignment_id
t.integer :security_user_id
end
end
end

然后从你的终端运行 rake db:migrate。我用一个简单的例子创建了 关于多对多关系的测验,这可能会对你有帮助。

要在命令行中自动填充 create _ join _ table 命令,应该如下所示:

rails g migration CreateJoinTableProductsSuppliers products suppliers

对于 Product 模型和 Supplier 模型,Rails 将创建一个名为“ products _ Supply”的表。

(注意,generation命令可以简化为 g)

在创建连接表时,我通常也喜欢使用“模型”文件。

rails g model AssignmentSecurityUser assignments_security:references user:references

我相信这将是一个更新的轨道5的答案

create_table :join_table_name do |t|
t.references :table_name, foreign_key: true
t.references :other_table_name, foreign_key: true
end

Rails 中有连接表的嵌入式生成

rails g migration AddCityWorkerJoinTable cities:uniq workers

产生以下迁移

create_join_table :cities, :workers do |t|
t.index [:city_id, :worker_id], unique: true
end

注意:

  • 模特的名字应该按字母顺序排列
  • 只将 :uniq放在第一参数上