1. ホーム
  2. ruby-on-rails

[解決済み】Railsでuser_id:integerとuser:referencesを使用してモデルを生成する。

2022-04-13 11:50:18

質問

他のモデルに属するモデルを生成する方法について混乱しています。私の本では、MicropostとUserを関連付けるためにこの構文を使っています。

rails generate model Micropost user_id:integer

しかし https://guides.rubyonrails.org/active_record_migrations.html#creating-a-standalone-migration には、このようにしろと書いてある。

rails generate model Micropost user:references

この2つで生成されるmigrationは異なります。また、前者については、railsはどのようにして user_id を参照する外部キーです。 user ? ありがとうございます。

解決方法は?

マイグレーションを実行すると、どちらも同じカラムが生成されます。 railsコンソールで、そのことを確認することができます。

:001 > Micropost
=> Micropost(id: integer, user_id: integer, created_at: datetime, updated_at: datetime)

2番目のコマンドは belongs_to :user のリレーションシップを作成します。 このリレーションが指定された場合、ActiveRecordは外部キーが user_id という名前のモデルを使用します。 User を使用して、特定のユーザーをインスタンス化します。

2番目のコマンドはまた、新しい user_id カラムになります。