こんにちは。
当ページにアクセスしてくださり、ありがとうございます。
この記事は、プログラミング言語「Ruby」のフレームワーク「Rails」についての記事になります。
問題.1
モデルについての問題です。
例えばPictweetで、Tweet.find(1)を実行するとidが1番のつぶやきを取得することができます。
この時、Tweetクラスの中にfindメソッドを定義していないにも関わらず、findというメソッドを使用できる理由を述べてください。
模範回答
ターミナル上で、
```ターミナル
$ rails g model tweet```
上記のコマンドを実行するとTweetクラスが作成されますが、このTweetクラスはActiveRecord::Baseを継承しています。
そこで、ActiveRecord::Baseとは、
テーブルにアクセスして、レコードを取得する為のメソッド
上記です。
テーブルに格納されたレコードを取り扱う動作として、全件取得・検索・追加・更新・削除などがあります。
これらをやってくれるメソッドがActiveRecord::Baseに入っているのです。そして、
```Rails(Ruby)
1 class Tweet < ActiveRecord::Base
2 end```
上記の記述で、TweetクラスがActiveRecord::Baseを継承します。
これによって、TweetクラスがActiveRecord::Baseで定義されているメソッドを使用することが出来るのです。
問題.2
Railsにおけるアソシエーションとはどのような機能か、またMVCのどこに含まれる機能なのか簡潔に述べてください。
模範回答
DBのテーブルとテーブルを紐づけることによって、関連するデータの読み書きを容易にするための機能。
MVCの中のM(モデル)に含まれます。
具体的には、次のように書きます。
(例)Tweetクラス
```Rails(Ruby)
1class Tweet < ActiveRecord::Base
2 belongs_to : user // この行がアソシエーション
3 end```
(例)Userクラス
```Rails(Ruby)
1class User < ActiveRecord::Base
2 has_many : tweets // この行がアソシエーション
3 end```
上記のように、belongs_toやhas_manyを使ってテーブル同士の関係を明確に出来ます。
これがアソシエーションの役割です。
以上となります、参考になれば幸いです。
最後まで読んでいただき、ありがとうございました。