Woher weiß Rails, dass user_ides sich um eine Fremdschlüsselreferenzierung handelt user?
Rails selbst weiß nicht, dass user_ides sich um eine Fremdschlüsselreferenzierung handelt user. Im ersten Befehl rails generate model Micropost user_id:integerwird nur eine Spalte user_idhinzugefügt, Rails kennt jedoch die Verwendung der Spalte nicht. Sie müssen die Linie manuell in das MicropostModell einfügen
class Micropost < ActiveRecord::Base
belongs_to :user
end
class User < ActiveRecord::Base
has_many :microposts
end
die Schlüsselwörter belongs_tound has_manybestimmen die Beziehung zwischen diesen Modellen und deklarieren user_idals Fremdschlüssel zum UserModell.
Der spätere Befehl rails generate model Micropost user:referencesfügt die Zeile belongs_to :userin das MicropostModell ein und deklariert hiermit als Fremdschlüssel.
Zu Ihrer
Information Wenn Sie die Fremdschlüssel mit der vorherigen Methode deklarieren, werden die Rails nur über die Beziehung der Modelle / Tabellen informiert. Die Datenbank ist über die Beziehung unbekannt. Wenn Sie die EER-Diagramme mit einer Software wie der folgenden erstellen, stellen MySql WorkbenchSie daher fest, dass zwischen den Modellen keine Beziehungsthreads gezogen werden. Wie im folgenden Bild

Wenn Sie jedoch die spätere Methode verwenden, sieht Ihre Migrationsdatei folgendermaßen aus:
def change
create_table :microposts do |t|
t.references :user, index: true
t.timestamps null: false
end
add_foreign_key :microposts, :users
Jetzt wird der Fremdschlüssel auf Datenbankebene festgelegt. und Sie können geeignete EERDiagramme erstellen.
