75

関連付け用の結合テーブルの移行を生成するための多くSOの投稿を調べましたが、何も機能しません。googlehas many and belongs to many

すべてのソリューションが空の移行ファイルを生成しています。

私が使用rails 3.2.13していて、2 つのテーブルがあります: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 

2 つのテーブル間で結合テーブルの移行を作成する方法を誰か教えてもらえますか?

4

5 に答える 5

189

コマンド ラインで create_join_table コマンドを自動入力するには、次のようにします。

rails g migration CreateJoinTableProductsSuppliers products suppliers

Product モデルと Supplier モデルの場合。Rails は「products_suppliers」というタイトルのテーブルを作成します。複数形に注意。

generation(コマンドは単にに短縮できることに注意してくださいg

于 2013-12-19T03:16:45.863 に答える
46

次のコマンドを実行して、空の移行ファイルを生成します (自動的には入力されないため、自分で入力する必要があります)。

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、ターミナルから実行します。役立つかもしれない簡単な例を使って、many_to_many 関係に関するクイズを作成しました。

于 2013-07-20T19:12:22.390 に答える
34

通常、結合テーブルを作成するときに「モデル」ファイルも必要です。したがって、私はそうします。

rails g model AssignmentSecurityUser assignments_security:references user:references
于 2016-07-28T10:51:51.597 に答える
1

これはRails 5の最新の回答になると思います

create_table :join_table_name do |t|
  t.references :table_name, foreign_key: true
  t.references :other_table_name, foreign_key: true
end
于 2019-03-21T14:19:32.527 に答える