30DAYSトライアル4th(Rails)DAY24(仮)の課題は「Progate Rails コース(9章まで)」です。
※(仮)としているのは東京フリーランスの記事ではDAY20までしか書かれていないので、その先を勝手に進めているからです。
以前の30DAYSトライアル4th(Rails)DAY20以降の進め方の記事ではDAY24(仮)はProgate Ralisの道場コース3章までの2日目にしてたんですが、1日で完了できたので、次の学習コースに進んでいきます。
目次
30DAYSトライアル4th(Rails)DAY24(仮)の学習内容
30DAYSトライアル4th(Rails)DAY24(仮)の学習内容は以下のとおりです。
- 投稿とユーザーを紐つける:複数テーブルの紐つけ(JOIN)
- 東京の編集・削除の制限:複数テーブルと紐つけた上での機能制限
他のテーブルデータと紐つける
紐つけを行いたいテーブル主キー値を外部キーとしてカラムに追加することで紐つけを行う
※元となるデータ(外部キーを持つデータ)を取得し、その外部キーを使って取得したいテーブルのデータを取得する
モデルにインスタンスメソッドを定義する
モデル内にインスタンスメソッドを追加し、該当のモデルから生成したインスタンスからインスタンスメソッドを呼び出すことが可能。
こうすることでモデルに対しての操作やデータ取得を共通化できる。
インスタンスメソッドは30DAYSトライアル4th(Rails)のまとめ【DAY3】で行ったProgateのRubyコースなどで登場してます。
An error has occurred. Please try again later. |
条件に合致するデータを複数件取得する:whereメソッド
find_byは条件に合致するデータの先頭1件のみを取得するのに対して、「whereメソッド」は条件に合致する全てのデータを取得すりことができます。
1 |
変数名 = モデル名.where(カラム名: 条件値) |
取得した値は配列となっている。
まとめ
今回は複数のテーブルを紐つけてデータの表示や制限を行うことの学習でしたが、あまり目新しいことは登場しませんでした。
SQLであればJOINで一発で取得できますが、Railsだと今回のように元データを取得して、そのデータを元にほしいデータを取得するという書き方になるんですかね。
そうだとしても、SQL文書くより構文を閣僚は減りますし、SQLもJOINで一発でかけるだけで、内部的には一つ一つ取得してるから一緒っちゃ一緒だと思います。
個人的には今勤めているソフトウェア会社で使ってるDBのような操作っぽい感じで扱えるので特に違和感はないですし。
しかし、今回の複数テーブルの紐付けはどんなシステムを作成するとしても必須なので、しっかりとおさえておきたたいところです。