Bạn cần thêm một bảng nối riêng chỉ có a restaurant_id
và user_id
(không có khóa chính), theo thứ tự bảng chữ cái .
Trước tiên, hãy chạy quá trình di chuyển của bạn, sau đó chỉnh sửa tệp di chuyển đã tạo.
Đường ray 3
rails g migration create_restaurants_users_table
Đường ray 4 :
rails g migration create_restaurants_users
Đường ray 5
rails g migration CreateJoinTableRestaurantUser restaurants users
Từ các tài liệu :
Ngoài ra còn có một trình tạo sẽ tạo ra các bảng tham gia nếu JoinTable là một phần của tên:
Tệp di chuyển của bạn (lưu ý :id => false
; đó là thứ ngăn cản việc tạo khóa chính):
Đường ray 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
Đường ray 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
sẽ tự động tạo các chỉ số cần thiết. def change
sẽ tự động phát hiện chuyển tiếp hoặc di chuyển ngược, không cần lên / xuống.
Đường ray 5
create_join_table :restaurants, :users do |t|
t.index [:restaurant_id, :user_id]
end
Lưu ý: Ngoài ra còn có một tùy chọn cho tên bảng tùy chỉnh có thể được truyền dưới dạng tham số để create_join_table được gọi table_name
. Từ các tài liệu
Theo mặc định, tên của bảng nối xuất phát từ sự kết hợp của hai đối số đầu tiên được cung cấp cho create_join_table, theo thứ tự bảng chữ cái. Để tùy chỉnh tên của bảng, hãy cung cấp tùy chọn: table_name: