bagaimana rel tahu itu user_id
adalah referensi kunci asing user
?
Rails sendiri tidak tahu bahwa itu user_id
adalah referensi kunci asing user
. Dalam perintah pertama rails generate model Micropost user_id:integer
hanya menambahkan kolom user_id
namun rel tidak tahu penggunaan col. Anda harus secara manual meletakkan garis dalam Micropost
model
class Micropost < ActiveRecord::Base
belongs_to :user
end
class User < ActiveRecord::Base
has_many :microposts
end
kata kunci belongs_to
dan has_many
menentukan hubungan antara model-model ini dan menyatakan user_id
sebagai kunci asing untuk User
model.
Perintah selanjutnya rails generate model Micropost user:references
menambahkan baris belongs_to :user
dalam Micropost
model dan dengan ini menyatakan sebagai kunci asing.
FYI
Mendeklarasikan kunci asing menggunakan metode sebelumnya hanya membuat Rails tahu tentang hubungan model / tabel. Basis data tidak diketahui tentang hubungannya. Karena itu ketika Anda membuat Diagram EER menggunakan perangkat lunak seperti MySql Workbench
Anda menemukan bahwa tidak ada thread hubungan yang ditarik antara model. Seperti pada gambar berikut
Namun, jika Anda menggunakan metode yang lebih baru, Anda menemukan bahwa file migrasi Anda terlihat seperti:
def change
create_table :microposts do |t|
t.references :user, index: true
t.timestamps null: false
end
add_foreign_key :microposts, :users
Sekarang kunci asing diatur di tingkat basis data. dan Anda dapat menghasilkan EER
diagram yang tepat .