今回はRSpecの書き方でわかってなかったことをまとめます。 ユーザー新規作成のときに変数を定義していた 開発時のコントローラでは、お決まりのように変数を定義していたので、なんとなく定義して、expect(user).to be_validとしていた。 これだとuserオブ…
システムスペックとは 前回の記事で扱ったモデルスペックは単一のモデルの動作をチェックする単体テストだったのに対し、今回のシステムスペックは、プログラム全体の挙動を確認するための統合テストのひとつです。 システムスペックはCapybaraを使ってブラ…
今回はRSpecの中で使われるbeforeについてサクッとまとめます。 beforeの使い方 beforeは英語で前という意味がありますね。 そうです。describeやcontextを検証していく「前に」処理してくれるものです。 たとえば次のようなテストを見てみましょう。 descri…
今日はRSpecとFactoryBotを使ったテストの書き方をまとめます。 はじめてテストを作るので基本から復習します。 テストデータを作る 今回はFactoryBotを使ってテストデータを作ります。 今まではseed.rbでサンプル用のデータを作っていましたが、FactoryBot…
モデルの関連付けはそもそもあまり得意じゃないのですが、has_many :throughはもっと苦手です。 ちょっとわかったことをまとめてみます。 1対多の関連付け(belongs_to) 今までやっていたのは以下のような1対他の関連付けでした。 user.rb has_many :posts…
uniqueness テーブル内で同じデータが重複しないようにするには、uniqueness: trueを使ってユニーク制約をつけます。 たとえば、同じ名前のユーザーが登録できないようにするには、Userモデルで以下のようにバリデーションを設定します。 user.rb validates …
saveやdestroyには、save!やdestroy!などの破壊的メソッドがあります。 ぺんぎんを含め、初学者には、この違いは少しわかりずらいかもしれませんが、わかったところまでまとめてみたいと思います。 saveやdestroyを使う時 saveやdestroyは、処理が失敗すると…
今回は三項演算子を使って、if文を省略して書く方法についてです٩( ᐛ )و 簡潔にまとめると、このif文が、 if xxx yyy else zzz end 三項演算子を使って短く書くと、こうなります。 xxx ? yyy : zzz 具体的に例を書いてみます。 bird = 'penguin' bird == 'pe…
link_toやredirect_toなどで次のようなパスを見ることがあります。 redirect_to user_path(@user) redirect_to @user この二つは同じ動きをしますが、なぜパスのあとにインスタンスを入れているのでしょうか? 次のコードについて考えてみましょう。このコー…
モデルで関連付けしたオブジェクトをコントローラで初期化します。 初期化とは、最初の状態を整えること。ここではオブジェクトの作成のことです。 まず、Userモデルを親、Postモデルを子として関連付けします。 user.rb has_many :posts post.rb belongs_to…
ログインしているユーザーが自分の投稿を編集できるように、編集用のえんぴつマークのアイコンをFontAwesomeを使って表示させます。 自分以外のユーザーの投稿やコメントには編集アイコンを表示させないようにします。 ログインしているユーザーが投稿を作成…
こんにちは。ぺんぎんです。 今回はユーザー登録や投稿の時に使う、画像アップロード機能を実装していきたいと思います。 railsの便利なライブラリ、Carrierwaveを使えば簡単に画像アップロード機能を実装することができます。 Carrierwaveとは Railsにおけ…
どうも、はじめまして。ぺんぎんです。 読んでくださっている方ありがとうございます。 エンジニア・IT業界の経験ゼロで、エンジニア目指して1からプログラミングの勉強をしてます。 ここではRuby on Railsを中心に、自分のハマったポイントなどを、備忘録の…