どぼじょのIT学習ブログ

高専卒土木女子がIT業界を目指してお勉強。

初めての Rails 学びメモ

最近はずっと rails の勉強をしています!
最初はrails が自動で作ってくれる沢山のファイルをどう触っていいのかわからなかったのですが、ようやくある程度自分で考えて編集できるようになってきました🎉
細々と学んだことがあるので、自分の記録としてブログに書いておきます💪
rails 慣れてる方にとっては読むほどのことではないと思いますが、本当に初めて触る方にとって何かヒントになればと思います😊

1.Ruby on Rails 概要

わからないところをわかるようになるには、調べてそこに書いてあることが解読できないと意味ないです。
なのでなんとなくわかってきた概念を自分なりにまとめました。


もちろん一概には言えなかったり言葉足らずなところがあるのは重々承知なので、揚げ足取りは受け付けません😙
とりあえずこういうことをイメージしたら一歩進めたよって話です。

2.どこでつまづいているかわからないとき

書いたコードがなぜかブラウザに反映されなかったり、POSTしたパラメータがなぜか表示されなかったり、「なぜか表示されない」系はブラウザにエラー文すら出てこないです…。
そのため、どこのコードを直せば良いのか見当もつかない時がありました😭😭
ブラウザの表示ばかりに気を取られて、裏で起きていることを見落としていた初心者っぷりです。

こういう時は、以下のところをチェックしたら解決できることが多かったです✨

  • コンソール(railsサーバのログ)
    エラー文やPOSTしたパラメータの中身が書かれています。
    場合によっては解決方法まで教えてくれているので、よく読んだほうが良いです笑
  • chrome の「検証」や「ページのソースを表示」
    erb などで書いたコードが思い通りのHTMLになっているか確認できます。
    私は form の action (POST先のURL)を確認することが多いです。

3.rails console の使い方(使い道)

POSTがうまくいかないときなど、色々調べていると「rails console で確認する」みたいなことが書いてありますが、「それのやり方がわからないんだよーーー!💀」状態でした。
$ rails cでコンソールモードになるのは知っていても、具体的に何を入力して何を見れば良いのかわからない。
今でもちゃんと使えているとは思えないのですが、最低限知りたいことを知るツールとしては使えるようになりました!

例えば User という名前のモデルがあるとしたら、User.newって入力すると User が一人生まれます。
これだけでは当然名前やメールアドレスなど必要な情報は全部 nil ですが…笑
でもDBの User テーブルが持っているカラムを見ることはできます。
f:id:mistyrinth:20190721161031p:plain

これを見て「あれ、provider なんてカラムあったっけ?」なんて考えるヒントになったりします👀
普通なら自分で作ってるはずなんですけど笑
私みたいな初心者はいろんなところからコピペしてくるので、いつの間にか状況が把握しきれなくなりますよね〜👻
ちなみにこれをやってしまうと、今まで正常だったはずのビューで「name が nil です」ってエラーが出たりするので、カラムを確認できたらUser.last.destroyなどのコマンドで削除するのをおすすめします🤭

カラムを確認したいだけならUser.lastのほうが楽です。最後に作成した User のレコードを表示してくれます。
ただし User が既に1人以上いる場合に限ります!

f:id:mistyrinth:20190721161817p:plain

このモデル名.newとかモデル名.lastとかの書き方は ActiveRecord と呼びます。
なのでActiveRecordで調べると他の書き方も知ることができます!

4.ビューの form とコントローラー

私がよくわからなかったのは、ビューで投稿フォームを作ったのに submit ボタン押しても POST されてないみたいだなということが多かったです。
例えばコメントフォームを作って投稿したいとき、なぜかコメントが保存されなかったら、Comment コントローラーを確認します。
new と create の違い、edit と update の違いをあまり気にせずなんとなくやっていたので、全然うまくいきませんでした笑

アクション コードが動くタイミング
new 投稿ページを表示する時
create new のページで submit ボタンを押した時
edit 更新ページを表示する時
update edit のページで submit ボタンを押した時

submit ボタンを押す前はいくら create アクションの中身にコードを書いても動きません。
なのでビューに渡したいインスタンス変数などがあれば new の中に書きます!

「なんか edit メソッド何も書いてないけど動いてるし、このまま edit には触れずに update に色々詰め込も〜」なんて適当なこと考えていたからつまづきました😂笑 性格ですね、たぶん全然ここでつまづかない人もいっぱいいると思います。

5.ストロングパラメータ

ストロングパラメータは単語だけ難しそうですがそんなに難しくなかったです。
コントローラの下のほうによくあるこういう private メソッドです。
f:id:mistyrinth:20190721163631p:plain

これは、悪意を持って変な情報を POST されないように rails が POST を受け付ける内容を制限しています。
キャプチャの例だと、 titleは受け付けてくれますがurlは拒否されます。

拒否されるとサーバ起動しているコンソールにunpermitted parameterと表示されます💪

他にも細々と注意点はありますが、ざっくりとしたのは以上です🎉