raylar bunun user_id
yabancı anahtar referansı olduğunu nasıl bilir user
?
Rayların kendisi user_id
bunun yabancı bir anahtar referansı olduğunu bilmiyor user
. İlk komutta rails generate model Micropost user_id:integer
sadece bir sütun ekler, user_id
ancak raylar col kullanımını bilmez. Çizgiyi Micropost
modele manuel olarak koymanız gerekir
class Micropost < ActiveRecord::Base
belongs_to :user
end
class User < ActiveRecord::Base
has_many :microposts
end
anahtar kelimeler belongs_to
ve has_many
bu modeller arasındaki ilişkiyi belirlemek ve model user_id
için yabancı bir anahtar olarak ilan User
.
Sonraki komut , modeli modele rails generate model Micropost user:references
ekler ve böylece yabancı anahtar olarak bildirir.belongs_to :user
Micropost
FYI
Yabancı anahtarların eski yöntemi kullanarak bildirilmesi, Rayların sadece modellerin / tabloların ilişkisi hakkında bilgi sahibi olmasını sağlar. Veritabanı ilişki hakkında bilinmiyor. Bu nedenle, EER Diyagramlarını MySql Workbench
sizin gibi bir yazılım kullanarak oluşturduğunuzda , modeller arasında ilişki ilişkisi çizilmediğini göreceksiniz. Aşağıdaki resimdeki gibi
Ancak, sonraki yöntemi kullanırsanız, taşıma dosyanızın aşağıdaki gibi olduğunu görürsünüz:
def change
create_table :microposts do |t|
t.references :user, index: true
t.timestamps null: false
end
add_foreign_key :microposts, :users
Şimdi yabancı anahtar veritabanı düzeyinde ayarlanmıştır. ve uygun EER
diyagramlar oluşturabilirsiniz .