あるツイートのコメントという箱から、コメントの文字だけを取り出す方法。
ツイートに対してのコメントが入力された時、箱で例えると、「あるツイートのコメント」という箱がcommmetsコントローラーに送られてくる。
これは、「あるツイート」の箱の中に、「コメント」という箱が入っている状態になっている。
ここからこのコメントの文字を取り出すためには、「あるツイート」という箱の中から、「コメント」という箱を取り出して、その中から、「そのコメントの文字」という情報を取り出す必要がある。
requireメソッドを使用することによって、「あるツイート」という箱の中から、「コメント」という箱を取りだす。
params.require(:comment)
permitメソッドを使用することによって、「コメント」という箱の中から、「そのコメントの文字」を取り出す。
params.require(:comment).permit(:text)
このようにすることによって、ツイートコントローラーのルーティングに、ネストされたコメントコントローラーのルーティング(あるツイートのコメントという箱)から、コメントの文字だけを取り出すことができる。
ストロングパラメーターについて。
ストロングパラメーターとは、指定したキーを持つパラメーターのみを受け取るように制限するもの。
主に、require,permidメソッドを利用して設定する。
require(必要とする)メソッド。
送信されたパラメーターの情報を持つparamsが使用できるメソッド。
パラメーターからどの情報を取得するか選択する。
ストロングパラメーターとして使用する場合、主にモデル名を指定する。
Params.require(:モデル名)
params[:モデル名]としても、同じ情報を取得することができるが、requireメソッドを使うことで、意図しないパラメーターであった場合にエラーとして返すことができ、原因特定や、ユーザーにエラーを示すなどの対応ができる。
permit(許可)メソッド。
requireメソッドと同様に、paramsが使用できるメソッド。
取得したいキーを指定でき、指定したキーと値のセットのみを取得する。
params.require(:モデル名).parmit(:キー名, :キー名)
Permitメソッドでprams.requireの内容からキーを指定すると、それ以外のキーがあっても値を受け付けない。
ストロングパラメーターはprivateメソッドとしてコントローラーに定義する。
ルーティングのネストについて。
ネストは、ある記述の中に別の記述をして、親子関係を示す方法。
ルーティングにおけるネストとは。あるコントローラーのルーティングの中に、別のコントローラーのルーティングを記載すること。
ルーティングでネストを利用すると、アクションを実行するためのパスで、親子関係を表現できる。
たとえば、tweets_controller.rbのルーティングの中に、comments_controller.rbのルーティングを記述すると、
URIが /tweets/:tweet_id/comments(.:format) となる。
もし、ネストを利用しなかった場合は、:tweet_idのような、パスにパラメーターを含められる部分はない。
以上からわかるように、ルーティングにネストを利用しなければ、モデルと結びついている別モデルのid情報が送れなくなる。
ネストを利用すれば、id情報を含めることができる。
まとめると、ルーティングをネストさせるいちばんの理由は、アソシエーション先のレコードのidをparamsに追加してコントローラーに送るため。
Active recordメソッド、allを使用した、テーブルからのデータの取得について。
Active recordメソッドとは、モデルがテーブル操作に関して使用できるのメソッドの総称のことである。
「Post.all」でテーブルのレコードを全て取得。
「Post.all」を「posts」という変数に代入。
「posts.content」とするとエラーが起きる。
これはどのレコードのコンテントカラムを表示すればいいのかが分からないから。
そこで、eachメソッドを用いることで、レコードを一つずつ扱うことができるようにする。
コントローラーにて、Post.allをインスタンス変数@postsに代入。
Post.all
@posts = Post.all
ビューファイルにて、レコードを1つずつ取得する。
<% @posts.each do |post| %>
<%= post.content %>
<%= post.created_at %>
<% end %>
このようにすることで、Active recordメソッド、allを使用した、テーブルからのデータの取得が行えるようになる。
僕がテックキャンプを受講しようと思ったきっかけ。
テックキャンプ99期生としプログラミングを学習しはじめて今日で、ちょうど10日になる。
「基礎カリキュラム」というプログラミングの基礎を学ぶカリキュラムを終了することができたので、ここまでの感想を、プログラミングを始めようと思ったきっかけから書いていきたいと思う。
テックキャンプを受講しようと思ったきっかけは、「ものづくりがしたい」と思ったことからだった。
高校一年生の時にギターを知り合いから譲ってもらい、音楽を始めた。
自分がよく聞いている曲のコードをインターネットで調べ、見様見真似でコードを鳴らしてみる。
最初は、コードの押さえ方が甘くて、音が全く鳴らない。
だけど、きれいに音が鳴った時のあの感動を味わうために、学校から帰ってきたら、毎日ギターを触っていた。
どんな曲でも、コードさえわかれば、大体は弾けるようになって行った。
そんなある日、ある一つのことに気がついた。
「ギターを使う人には二種類いる」と。
一方はギターで誰かが作った曲を弾く人、そしてもう一方は、ギターで自分の曲を作る人だ。
そして同時に、世の中も同じだと思った。
使う人と、作る人。
どちらがいい、悪い、ではなく、両方の人がいて世の中は成り立っている。
どちらも素晴らしい生き方だ。
しかし、僕が憧れを持ったのは、「作る人」だった。
それから僕は、「ものづくり」に興味を持つようになった。
そこで僕が新しく始めたのが、「写真」だった。
(ギターでも曲を作ろうとしたが、難しくて諦めてしまった。これはまた挑戦したい。)
カメラ1台、スマホ1台あれば、誰でも簡単に「写真」というものを作り立つことができる。
音楽や、文章などと違って、「ものづくり」の難易度が低く誰でも簡単に始められる。
それから僕は、様々な写真を撮るようになった。
人、景色、物、いろんなものを撮っていく中で、これまた新たな気づきがあった。
それは、単に「ものづくり」と言っても、「価値創出」のためのものづくりと「課題解決」のためのものづくりがあるということだ。
写真もそうだった。
「家族写真をとる」というのは、価値創出のためのものづくりである。
その写真は、なくても困らないが、あると喜びを感じられ、生活が豊かになる物だ。
対して、「商品を撮影する」というのは課題解決のためのものづくりである。
その写真は、その商品が存在する、ということを誰かに伝える上では、なくては為らないものである。
多くの人が憧れるのは、価値創出のためのものづくりなのかもしれないが、僕が興味を持ったのは、課題解決のためのものづくりだった。
社会を回すエネルギーを生み出す価値創出ではなく、実際に社会を回していく課題解決とはどのようなものなのかに興味が湧いた。
そこで僕が始めようと思ったのが、「プログラミング」だった。
なくても困らないが、あると喜びを感じられるものではなく、これからの社会を回していく上で、なくては為らないものを作ることができる職業であると感じたからだ。
ずいぶんと前から、まこなり社長のyoutubeを見ていて、テックキャンプというプログラミングスクールがあると知っていたので、すぐにテックキャンプを受講することを決めた。
4月5日から学習が始まり、今日は4月14日なので、ちょうど10日目になる。
プログラミングのプの字もわからなかった10日前と比べるとずいぶんと成長することができたと感じている。
ウェブサイトの見た目の作り方、サーバーのシステム構築について。等など、
基礎カリキュラムという名前の通り、プログラミングの基礎は大方身につけられた。
これからは応用に入り、これまで学んできた知識を使いながらアプリケーションを作っていく。とても楽しみだ。