2020-08-01から1ヶ月間の記事一覧

AWSについて学習したこと<その1>

AWS

AWSについて2, 3日ほどかけてざっくり勉強しようかと思っています。 経緯 どうしてそうなったかというと、 アプリを作ったのなら、使ってもらえるように公開したい ↓ HerokuでもいいけどAWSでデプロイする方が良さそう ↓ 一つ目のアプリはカリキュラムなりQi…

form_withの:scopeオプション

いつも当たり前のようにお世話になっているform_withなのですが、時々登場する:scopeって何なんだろうとずっと気になりつつもスルーしていたので、ちょっと考えてみました。 form_withの書き方 まずはform_withの書き方。モデルのインスタンスを与える場合と…

Railsアプリでの検索フォームの作り方

投稿を検索する機能の作り方です。 こういうやつですね。 ルーティングを設定 まずはルーティングを設定します。 resourcesの7種類には含まれないアクションを作るので、collectionを使います。config/routes.rbに以下のように記述します。 Rails.applicati…

部分テンプレートの作成とrenderの使い方

ビューファイルを書いていると記述量がどんどん増えてきて、繰り返しの部分も出てくるかと思います。そんな時に役立つ部分テンプレートのお話です。DRYってやつですね。 部分テンプレートとは ビューファイルの中で何度も出てくる同じ記述を切り出して、別の…

link_toにremote: trueをつけて非同期通信

ツイッターのいいねみたいな機能をつけたくて、非同期通信を実装しようとして迷走しました。 初めはカリキュラムに出てきたAction cableを使ったのですが、出来上がってから欠陥に気づきました。ググったら「正解」的なやり方が出てきて、早く調べればよかっ…

RailsアプリにGoogleフォントを導入してみた

アプリ制作に必須というわけでもないのですが、作りたい世界観に合うようにしたかったので、webフォントを導入してみました。 Webフォントとは インターネット経由で読み込んで使うことのできるフォントを、Webフォントと言います。サイトを表示するときにネ…

パラメーターでidを二つ送るのにてこずった話

ルーティングをネストしてパラメーターでidを2つ送りたかったときに、なかなかうまくいかずに困りました。 背景 登場するテーブルは二つです。 postsテーブル reactionsテーブル reactionsとpostsが1対多の関係になっています。 reactionsテーブルにはComm…

Bootstrapの使い方の基礎の基礎

オリジナルアプリのフロント実装のためにBootstrapと格闘していますが、使えば使うほどフロントの奥の深さに圧倒されています。 それでもごく浅い部分については感覚がつかめてきたので、基本的な使い方を書いてみようと思います。 Bootstrap自体や導入方法…

Bootstrapを導入してみた話

オリジナルアプリのビューを1から作るのは大変そうだと思っていたら、Bootstrapというものを見つけました。名前は聞いたことがあったのですが、どんなものかは全く知らず。少し調べてみて、とりあえず使ってみようかなと。 Bootstrapとは webページの見た目…

boolean型カラムが他の型と違うところ

テーブルに初めてboolean型のカラムを使ってみたところ、いろいろと今までと違うことがあって戸惑いました。 boolean型カラムの作り方 マイグレーションファイルに記述する、ということは他の型と変わりません。t.stringやt.integerと同じように、t.boolean…

改めてdeviseの使い方をおさらいしてみる

学習のためにいくつかアプリを作ってきましたが、ユーザー管理機能の実装には必ずdeviseを使っています。しかし、毎回なんとなく使っていて、deviseが何をしてくれているのかはあまり意識してこなかったので、少し考えてみることにしました。 gem 'devise'を…

ページが読み込まれたときにJSを発火させるには

JavaScriptを使うときはページが読み込まれたときに発火させることが多いのですが、どうやらいろいろな書き方がありそうだったので調べてみました。 DOMについて まずは基本。「ページが読み込まれる」とはどういうことなのか。この時点で完全に理解できてい…

初心者がとりあえず使えるようにしたいLinuxコマンド

なんでもターミナルでやれる人ってすごいなあと思いつつ、最低限使えるべきLinuxコマンドを調べてみました。 cd ディレクトリを移動するコマンド。cdの後ろに移動したい先の絶対パス、または相対パスを指定します。 cd ~/Desktop/folder1 cd documents/folde…

「:on」でバリデーション発動のタイミングを指定する

バリデーションが発動して欲しくないときに発動してしまって困った時の話です。 概要 deviseを使ったユーザー管理機能を実装 ↓ Userモデルにパスワードに関するバリデーションを追加 ↓ マイページでユーザー情報を編集できるように実装したい ↓ current_user…

Railsでデータベースのデータを削除するには

Railsでデータベースのレコードをいったん全て消したい時があると思いますが、やり方は少なくとも3通りあります。どれでもレコードを削除できますが、少しだけ違いがあります。 準備 rails newで新規アプリ作成 ↓ Itemsテーブル作成(カラムはnameとprice)…

seedを使ってデータを自動で生成する

アプリを製作する時に、とりあえずデータベースにデータを保存して挙動を確認したい、ということがあると思います。 ビューできちんと表示されるかな、みたいな。 手動でデータを作成することももちろん可能ですが、seedを使うことで簡単に仮のデータを作成…

Railsアプリのエラーメッセージを日本語化する

Railsアプリのエラーメッセージを日本語にする方法をまとめていきます。 やることはざっくり二つです。 Railsの設定を日本語にする localeファイルに直接記述 設定を日本語にする まずはデフォルトの言語を日本語にするため、config/application.rbに以下の…

環境変数の設定!Railsアプリで使用

環境変数の設定の仕方やRailsアプリでの使い方です。 環境変数とは 簡単に言えばOSに保存しておく変数、ということでいいと思います。環境変数に値を設定すると、シェルが簡単にその値にアクセスすることができます。 環境変数を設定するメリット 秘密鍵やパ…

処理が速すぎてエラー?一時停止はsleepメソッド

フリマアプリ製作の中で一番詰まったところだったのと、原因がなかなかに予想外だったので、記録に残しておこうと思いました。 空のテストコードでMySQLエラー 下のようなテストコードを作成しました。DealShipmentはActiveModel::Modelを使って作成したフォ…

TurbolinksのせいでJSが発火しない問題

アプリ製作中にJavaScriptがうまく発火しなくて、うんうん唸りながら調べたところ、Turbolinksというやつが問題でした。 Turbolinksとは 簡単にいうと、リンクを押した時に読み込みをせずに素早く次のページを表示してくれるツールです。Rails6では標準で導…

ヘルパーメソッドを自作する方法

先日フリマアプリの製作中に、出品者以外に商品の購入ボタンを表示するという機能を実装しました。その時にヘルパーメソッドを自作してみたので、記録しておきます。 準備 今回は、商品の詳細ページに以下のような購入ボタンを表示したいです。 // 出品者以…

ActiveHashのデータをFactoryBotで使う方法

アクティブハッシュのデータをFactoryBotで使うのにてこずったので、記録に残しておこうかと思います。 事の発端 itemモデルの単体テストコードで使うため、以下のようなFactoryBotを記述しました。 categoryはアクティブハッシュで、itemテーブルと紐づいて…

Rubocopにダブルクォーテーションを指摘させない方法

Rubocopは、インデントや改行やスペースなどコードの書き方におかしいところがないかをチェックしてくれる便利なツールです。 課題のアプリ作成中に使っていて、「シングルクォーテーションにしなさい」という注意が100件以上きたので、クォーテーションにつ…

テストで使える!ランダムなデータを作るFakerとGimei

テストコードを書く際に、ユーザーネームやパスワードなどランダムなデータを作りたいときがあると思います。そんな時に便利なFakerとGimeiというgemについて紹介します。 Fakerの使い方 Fakerはランダムなデータを自動で生成してくれるgemです。名前、メー…

Railsでバリデーションを設定する方法

今回はRailsでバリデーションを設定する方法についてまとめます。 バリデーションの目的 バリデーションとは、データをデータベースに保存する際に、データが満たすべき制約を定めておくことです。 例えばユーザー登録をする時に、ユーザー名が空白のまま登…