Ruby on Rails
エンジニア界隈でなんとなく使われている言葉について、いろいろ調べました。 厳密な定義はないんでしょうが、なんとなーくみんなそういう意味で使っているんだろうなという私の理解のメモです。 完全に私の主観なので、意見もらえると嬉しいです。 Webデザ…
前回の記事でパブリックアクセス設定をオフにすることで、画像のアップロードができるようになったという話をしました。 oyaoya1123.hatenablog.com その後 パブリックアクセスってなんだ? セキュリティ設定をオフにしているけど問題ないんだっけ? みたい…
railsチュートリアル13章の「本番環境での画像アップロード」について、書籍を参考にしながらAWSの設定をしてもうまくいかず苦労したので、私が苦労したポイントをまとめておきます。 最初に発生したエラー 2020-02-07T15:49:28.659851+00:00 app[web.1]: [4…
オブジェクト指向設計実践ガイドの2章について、自分なりの理解を記述します。 理解度50%くらいで書いているので、今後加筆修正する可能性大です。 まず、自転車の歯数の比(raito)とギアインチ(gear_inches)を計算するギアクラスを考えます。 各パラメー…
問題 remember me(ブラウザを再起動した後でもログインした状態から始められる)機能の実装方法、クッキーの仕組みも含めて説明して下さい。 回答 以下の流れでremember me機能を実装します。 base64の文字列等で記憶トークンを作成する。 作成した記憶トー…
問題 前提 エラーログ 回答 もうちょっと解説 当初エラー原因と思っていた箇所 教訓 問題 「 $ git push heroku 」を実行した際、以下のエラーが発生した。 エラー原因を調べる時、ヒントとなる情報がある部分はどこでしょうか。 前提 railsチュートリアル11…
問題 「 $ git push heroku 」を実行した際、以下のエラーが発生した。 エラー原因を調べる時、ヒントとなる情報がある部分はどこでしょうか。 前提 railsチュートリアル11章で発生したエラーです エラーログ Enumerating objects: 46, done. Counting objec…
問題 Railsにおけるログインの仕組みを説明して下さい 前提 deviseを使用せずにログインする 回答例 sessionの仕組みを利用して、以下の流れでログインを実現する。 ログイン画面から「メールアドレス」と「パスワード」を入力する メールアドレスでユーザ検…
問題 Railsにおけるログインの仕組みを説明して下さい。 前提条件 deviseを使用せずにログインする
問題 Railsにおけるユーザ新規登録の仕組みを説明して下さい。 前提条件 deviseを使用せずにユーザ登録する ユーザ登録時に暗号化されたパスワードをDBに保存する 回答例 ユーザを登録するためのモデルを準備する。 カラムは以下を設定。 email password_dig…
問題 Railsにおけるユーザ新規登録の仕組みを説明して下さい。 前提条件 deviseを使用せずにユーザ登録する ユーザ登録時に暗号化されたパスワードをDBに保存する
Ruby on RailsでFontAwesomeを使う方法はいくつかあるんですが、とても「ハマりポイント」が多く感じたので、そのポイントをまとめます。 (ちなみにこの記事は2019年12月に書いてます) どのgemを使うか 擬似要素(:before)を使うときの注意点 Railsを再起…
問題 findとfind_byとwhereの違いについて説明しなさい。 回答 返り値が異なる findとfind_byはモデルのオブジェクトを返す whereはActiveRecord::Relation(配列みたいなもの)を返す 検索結果が無かった時の挙動が異なる findはActiveRecord::RecordNotFou…
問題 findとfind_byとwhereの違いについて説明しなさい。 ヒント 返り値に違いがある 検索結果がヒットしなかった時に違いがある 回答 【回答】findとfind_byとwhereの違いについて - 迷い人
form_forとform_tagの違いについて解説します。 教科書的には モデルに関連するときはform_for モデルに関連しないときはform_tag みたいに言われています。 どういうことなのか具体的なコードを追いかけながら説明します。 メッセージ投稿機能 form_tagを使…
本日はアソシエーションについて説明します。 簡易ブログの例 テーブル間の関係性 アソシエーションがあると何が便利か 【注意】こちらの記事はコードの細かい説明ではなく、全体イメージをつかむことを重視しているので、そこはご了承ください。 さて、アソ…
本日はMVCについて解説していきたいと思います。 元は個人アプリ制作のコンテンツの一つとして制作したもので、ほとんどそのまま流用しています。 いつもと見た目が異なりますが、ご容赦下さい。 1.MVCモデルとは 2.MVCの関連性 ビュー コントローラ モデル …
本日は前回導入した非同期通信をもうちょっと改良したいと思います。 前回の記事は以下です。 oyaoya1123.hatenablog.com 前回実装したのは「ボタンを押下するとタスクが完了する」でした。 今回はこの機能をもう拡張して以下のようなボタンにします。 Done(…
本日は非同期通信でタスクステータスを「Done(タスク完了)」に変更する機能を実装しようと思います。 「非同期通信」というのがポイント。 非同期通信とは、簡単に説明すると「ページ遷移させずにデータを取得してページの一部を変更する」ことを言います…
本日はタスクステータス完了ボタンを実装していきます。 前回の記事でタスクステータスのカラムを追加しました。 oyaoya1123.hatenablog.com 登録したタスクが「継続中」なのか、「完了」したのかを表すカラムになります。 現状だとeditリンクからカラム更新…
本日は部分テンプレートと、ついでにタスクのステータスを追加を行いたいと思います。 部分テンプレートとは、view内の共通部分を切り出して別ファイルで管理することで viewファイルの見通しがよくなり保守性が向上 様々なviewで再利用できる eachで繰り返…
本日はn+1問題を解決していこうと思います。 いきなりですがn+1問題とは 何度もSQLが発行されてしまい、パフォーマンスが低下してしまう現象 です。 実はこれまで作成してきたtask管理アプリで起きていました。 どこで起きていたかというとtask管理一覧です…
本日は登録したタスクをカレンダーに表示していきます。 カレンダーはfullcalendarというgemを活用します。 本日のお品書き fullcalendarの導入 fullcalendarを表示 fullcalendarにタスクを表示 fullcalendarの導入 まずはGemfileの一番下に、以下の記述を追…
本日はtitle、start_date、end_dateを表示させる処理を実装していこうと思います。 各カラムの追加は前回の記事を参考にして下さい。 oyaoya1123.hatenablog.com それでは本日のお品書きです。 本日やること タスク一覧でtitleを表示させる タスク個別ページ…
本日はタスクテーブルにタイトル、開始日時、終了日時を追加していこうと思います。 tasksテーブルのカラムはcontentのみで寂しかったので、これで少し充実させます。 では、早速本日のお品書きです。 本日やること tasksテーブルにtitle、start_date、end_d…
今回はストロングパラメータについて解説したいと思います。すでに解説しているサイトもたくさんありますが、私の勉強もかねてまとめます。 まずはストロングパラメータとはcontrollers/tasks_controller.rbの下の方に記述してあるdef task_paramsの部分です…
新たにタスクを登録する時にログインしているユーザの名前も追加できる様にします。 本日やること tasksテーブルに「user_id」を追加する ストロングパラメータにuser_idを追加する アソシエーションを設定する task一覧画面にユーザ名を表示させる 1.tasks…
前回ユーザ管理機能導入のための下準備を行いました。 前回行ったことは devise gemの導入 userモデル(テーブル)の作成 web画面(view)の作成 でした。 本日はtask一覧画面にユーザ登録(Sign Up)、ログイン(Sign In)、ログアウト(Sing Out)リンクを作成…
task管理アプリケーションにユーザ管理機能を実装します。 ユーザ管理機能は大まかに言うと ユーザ登録 ログイン ログアウト の機能です。 これらの機能を全て作るとなると大変ですが、railsにはdeviseとgemが公開されていて、deviseを導入することで簡単に…
前回scaffoldでサクッとtask管理アプリを作成したので、これに機能追加しつつrailsの勉強を進めていきたいと思います。 ちなみに前回の記事は以下。 oyaoya1123.hatenablog.com では1番最初にrails処理の基本的な考え方、MVCモデルについて解説します。 MVC…