データベースに関連するファイルについて
目的:エラー解決のためには、モデルファイルとマイグレーションファイルの役割の違いをしっかりと理解しないといけないと思いこの記事を書きました。
現在:ポートフォリオ作成最終段階ですが、理解できてないことがまだまだたくさんあり、基礎理解が足りていないことに気付き、基礎を固めながら仕組みから理解しているという状況です。
モデルファイルの役割
データベースへのアクセス権限を示すためのファイルです。
記述されているモデルとアソシエーション(関連付け)は、モデル通しのデータベースへのアクセス権限を示しているということになる。
なぜ、このデータは取り出せないのか?を理解するためには、データーベースへのアクセス権限の記述されている、モデルファイルを見ると分かる。そして、理解への第一歩になる。
マイグレーションファイルの役割
データの内容を保管するために必要な情報を記述しているファイルです。
データを受け渡しの際は、ファイルに記述されているテーブル名(クラス)・カラム名を指定します。
なぜ、テーブル名(クラス)を指定するのか?
- カラムの条件に合わせた情報を格納したい場合、格納しているデータを取り出す際には、クラスを指定してから、カラム名を指定しなければならない。
日常生活に置き換えてみると、「〇〇クラスの山田さん」と言わずに、「全体の前で山田さんと叫んでいる」ような状況になってしまうからです。
まとめ
両方を合わせて理解する
データベースからのデータの受け取りの仕組みの基礎理解ができるようになる。
- モデルファイル:使用したいデータ同士でデータベースの権限を持っているのか?
- マイグレーションファイル:データベースに保管しているテーブルは、どの情報を保持しているのか
関連性を持っていなモデルとモデル
- データベース間のやりとりはできないためリレーションを作成する必要がある。
- データをそれぞれ取り出し、インスタンス変数を作成する必要がある。
ついでに
MVCのフェーズ理解
- model:データを取得、データを保管、データを取得、データを渡す
- controller:view・modelから情報を取得、view・modelが取得したい情報を渡す、view・modelが取得したい情報を受け取り渡す
- view:modelの情報をcontrollerから取得
アウトプットを公開することのメリット(感想)
自分の理解は本当にあっているのか?と何度も思いながら書くことで、知識定着ができました。
また、誰かの役に立つ記事になったのか分かりませんが、ブログで公開するアウトプットをすることで、深く理解でき、伝える力のトレーニングをすることもできました。
読んでくださった方、ありがとうございました。
間違いがありましたらご遠慮なくコメントの方よろしくお願いします。