restaurant_id
및 user_id
(기본 키 없음) 만있는 별도의 조인 테이블을 알파벳 순서 로 추가해야합니다 .
먼저 마이그레이션을 실행 한 다음 생성 된 마이그레이션 파일을 편집하십시오.
레일즈 3
rails g migration create_restaurants_users_table
레일스 4 :
rails g migration create_restaurants_users
레일즈 5
rails g migration CreateJoinTableRestaurantUser restaurants users
로부터 문서 :
JoinTable이 이름의 일부인 경우 조인 테이블을 생성하는 생성기도 있습니다.
마이그레이션 파일 (참고 :id => false
: 기본 키 생성을 방지합니다) :
레일즈 3
class CreateRestaurantsUsers < ActiveRecord::Migration
def self.up
create_table :restaurants_users, :id => false do |t|
t.references :restaurant
t.references :user
end
add_index :restaurants_users, [:restaurant_id, :user_id]
add_index :restaurants_users, :user_id
end
def self.down
drop_table :restaurants_users
end
end
레일스 4
class CreateRestaurantsUsers < ActiveRecord::Migration
def change
create_table :restaurants_users, id: false do |t|
t.belongs_to :restaurant
t.belongs_to :user
end
end
end
t.belongs_to
필요한 인덱스가 자동으로 생성됩니다. def change
앞으로 또는 롤백 마이그레이션을 자동으로 감지하므로 업 / 다운이 필요하지 않습니다.
레일즈 5
create_join_table :restaurants, :users do |t|
t.index [:restaurant_id, :user_id]
end
참고 :라는 create_join_table에 매개 변수로 전달할 수있는 사용자 정의 테이블 이름에 대한 옵션도 있습니다 table_name
. 로부터 문서
기본적으로 조인 테이블의 이름은 알파벳 순서로 create_join_table에 제공된 처음 두 인수의 합집합에서 가져옵니다. 테이블 이름을 사용자 정의하려면 : table_name 옵션을 제공하십시오.