রেলগুলি কীভাবে জানতে পারে যে user_idএটি একটি বিদেশী কী রেফারেন্সিং user?
রেলগুলি নিজেই জানে না যে user_idএটি কোনও বিদেশী কী রেফারেন্সিং user। প্রথম কমান্ডে rails generate model Micropost user_id:integerএটি কেবল একটি কলাম যুক্ত করে user_idতবে রেলগুলি কর্নার ব্যবহার জানে না। আপনাকে ম্যানুয়ালি Micropostমডেলটিতে লাইনটি লাগাতে হবে
class Micropost < ActiveRecord::Base
belongs_to :user
end
class User < ActiveRecord::Base
has_many :microposts
end
কীওয়ার্ড belongs_toএবং has_manyএই মডেল এবং ঘোষণা মধ্যে সম্পর্ক নির্ধারণ user_idকরার জন্য একটি বিদেশী কী-এর মত Userমডেল।
পরে কমান্ড rails generate model Micropost user:referencesলাইন যোগ করে belongs_to :userএ Micropostমডেল এবং এতদ্দ্বারা একটি বিদেশী কী-এর মত ঘোষণা করে।
এফওয়াইআই
প্রাক্তন পদ্ধতিটি ব্যবহার করে বিদেশী কীগুলি ঘোষণার মাধ্যমে কেবলমাত্র মডেলগুলি / টেবিলের সম্পর্ক সম্পর্কে রেলগুলি জানতে দেয়। ডাটাবেস সম্পর্ক সম্পর্কে অজানা। অতএব আপনি যখন সফ্টওয়্যার ব্যবহার করে EER ডায়াগ্রাম তৈরি করেন তখন আপনি MySql Workbenchদেখতে পাবেন যে মডেলগুলির মধ্যে কোনও সম্পর্কের থ্রেড নেই। নিম্নলিখিত ছবিতে লাইক

তবে আপনি যদি পরবর্তী পদ্ধতিটি ব্যবহার করেন তবে আপনি দেখতে পাবেন যে আপনার মাইগ্রেশন ফাইলটি এমন দেখাচ্ছে:
def change
create_table :microposts do |t|
t.references :user, index: true
t.timestamps null: false
end
add_foreign_key :microposts, :users
এখন বিদেশী কীটি ডাটাবেস স্তরে সেট করা আছে। এবং আপনি সঠিক EERচিত্রটি তৈরি করতে পারেন ।
