create_join_table(table_1, table_2, options = {})
Instance Public methods
Creates a new join table with the name created using the lexical order of the first two arguments. These arguments can be a String or a Symbol.
1 2 | # Creates a table called 'assemblies_parts' with no id. create_join_table( :assemblies , :parts ) |
You can pass a options
hash can include the following keys:
-
:table_name
-
Sets the table name overriding the default
-
:column_options
-
Any extra options you want appended to the columns definition.
-
:options
-
Any extra options you want appended to the table definition.
-
:temporary
-
Make a temporary table.
-
:force
-
Set to true to drop the table before creating it. Defaults to false.
Note that create_join_table
does not create any indices by
default; you can use its block form to do so yourself:
1 2 3 4 | create_join_table :products , :categories do |t| t.index :product_id t.index :category_id end |
Add a backend specific option to the generated SQL (MySQL)
1 | create_join_table( :assemblies , :parts , options: 'ENGINE=InnoDB DEFAULT CHARSET=utf8' ) |
generates:
1 2 3 4 | CREATE TABLE assemblies_parts ( assembly_id int NOT NULL , part_id int NOT NULL , ) ENGINE =InnoDB DEFAULT CHARSET =utf8 |
Please login to continue.