質問: 今までRailsでアプリを作成するにあたり関連エンティティに対して、 例えばOwnerモデルとBookモデルが1対多関連の場合は、 ``` class Owner < ApplicationRecord has_many :books end class Book< ApplicationRecord belongs_to:owner end ``` のように特に考えず関連メソッドを作成をしていました。 しかし上記modelを作成する際に `rails g model book owner:references` のように関連を明示してモデルを作成していますし。なぜ改めてhas_manyやbelongs_toメソッドを定義しているかが分かりません。 includesメソッドやjoins、pre_loadといったメソッドっhas_manyやbelongs_toを定義していなくても関連エンティティのデータを取れますよね? ふと疑問に思いましたが調べていても出てこなかった為、質問しました。 よろしくお願い致します。
回答: > > 関連を明示してモデルを作成していますし。なぜ改めてhas_manyやbelongs_toメソッドを定義しているかが分かりません。 > > > マイグレーションで指定するのは、**データベースの世界**でのリレーションです。Railsから見たリレーションは別途定義が必要です(`has_many through:`などは、Railsで見せるほかないものです)。 > > includesメソッドやjoins、pre_loadといったメソッドっhas_manyやbelongs_toを定義していなくても関連エンティティのデータを取れますよね? > > > **取れません**。これらは、モデルに書かれたアソシエーションを見て動きを決めています。