has many and belongs to many
アソシエーションの結合テーブルの移行を生成するために、多くのSO
およびgoogle
の投稿を調べましたが、何も機能しません。
すべてのソリューションが空の移行ファイルを生成しています。
Rails 3.2.13
を使用していますが、security_users
とassignments
の2つのテーブルがあります。これらは私が試したもののいくつかです:
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つのテーブル間の結合テーブルの移行を作成する方法を教えてもらえますか?
このコマンドを実行して、空の移行ファイルを生成します(自動的には入力されません。自分で入力する必要があります)。
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関係のクイズ を作成しました。簡単な例があります。
コマンドラインでcreate_join_tableコマンドを自動入力するには、次のようになります。
Rails g migration CreateJoinTableProductsSuppliers products suppliers
製品モデルおよびサプライヤーモデルの場合。 Railsは「products_suppliers」というタイトルのテーブルを作成します。複数形に注意してください。
(generation
コマンドはg
に短縮できることに注意してください)
私は通常、結合テーブルを作成するときに「モデル」ファイルも持っているのが好きです。したがって、私はします。
Rails g model AssignmentSecurityUser assignments_security:references user:references
これは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