วิธีการที่ไม่รางรู้ว่าuser_idเป็นอ้างอิงที่สำคัญต่างประเทศuser?
Rails ตัวเองไม่ได้รู้ว่าเป็นอ้างอิงต่างประเทศที่สำคัญ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รูปแบบและขอประกาศว่าเป็นกุญแจต่างประเทศ
FYI การ
ประกาศคีย์ต่างประเทศโดยใช้วิธีการแบบเดิมช่วยให้ Rails ทราบเกี่ยวกับความสัมพันธ์ที่โมเดล / ตารางมี ฐานข้อมูลไม่ทราบเกี่ยวกับความสัมพันธ์ ดังนั้นเมื่อคุณสร้างไดอะแกรม 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
ตอนนี้คีย์ foreign ถูกตั้งค่าที่ระดับฐานข้อมูล และคุณสามารถสร้างEERไดอะแกรม
ที่เหมาะสม