आप एक अलग ही एक साथ तालिका में शामिल होने के जोड़ने की जरूरत है restaurant_id
और user_id
(कोई प्राथमिक कुंजी), में वर्णमाला के क्रम ।
पहले अपना माइग्रेशन चलाएं, फिर जनरेट हुई माइग्रेशन फ़ाइल को संपादित करें।
रेल 3
rails g migration create_restaurants_users_table
रेल 4 :
rails g migration create_restaurants_users
रेलें ५
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
रेलें ४
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
ऑटो आगे या रोलबैक माइग्रेशन का पता लगाएगा, ऊपर / नीचे की कोई आवश्यकता नहीं है।
रेलें ५
create_join_table :restaurants, :users do |t|
t.index [:restaurant_id, :user_id]
end
नोट: कस्टम तालिका नाम के लिए एक विकल्प भी है जिसे create_join_table नामक पैरामीटर के रूप में पारित किया जा सकता है table_name
। से डॉक्स
डिफ़ॉल्ट रूप से, शामिल होने की तालिका का नाम वर्णानुक्रम क्रम में create_join_table को प्रदान किए गए पहले दो तर्कों के संघ से आता है। तालिका का नाम अनुकूलित करने के लिए, एक: table_name विकल्प प्रदान करें: