Railsはそれuser_idが外部キー参照であることをどのようにして知るのuserですか?
Rails自体user_idは、それが外部キー参照であることを認識していませんuser。最初のコマンドrails generate model Micropost user_id:integerでは、列を追加するだけですが、user_idレールはcolの使用を認識していません。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
これで、外部キーがデータベースレベルで設定されました。適切なEER図を生成できます。
