问题
I have looked through many SO
and google
posts for generating migration of join table for has many and belongs to many
association and nothing work.
All of the solutions are generating a empty migration file.
I am using rails 3.2.13
and I have two tables: security_users
and assignments
. These are some of things I have try:
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
Can anyone tell how to create a join table migration between two tables?
回答1:
Run this command to generate the empty migration file (it is not automatically populated, you need to populate it yourself):
rails generate migration assignments_security_users
Open up the generated migration file and add this code:
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
Then run rake db:migrate
from your terminal. I created a quiz on many_to_many relationships with a simple example that might help you.
回答2:
To autopopulate the create_join_table command in the command line, it should look like this:
rails g migration CreateJoinTableProductsSuppliers products suppliers
For a Product model and a Supplier model. Rails will create a table titled "products_suppliers". Note the pluralization.
(Side note that generation
command can be shortened to just g
)
回答3:
I usually like to have the "model" file as well when I create the join table. Therefore I do.
rails g model AssignmentSecurityUser assignments_security:references user:references
回答4:
I believe this would be an updated answer for 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
来源:https://stackoverflow.com/questions/17765249/generate-migration-create-join-table