- 1. 100日後くらいに個人開発するぞ!day041
- 2. 技術面接 質疑応答まとめ[未経験転職]
- 3. 「Rails パフォーマンスチューニング」viewファイルで起こるN + 1問題の修正方法
- 4. FakerBotがActiveHashのバリデーションにかかってしまう問題の解決法
- 5. 【Rails】ActionCableの実装〜mapメソッドについて〜
- 6. Railsのヘヴィな重い一覧ページを改修したお話。
- 7. 100日後くらいに個人開発するぞ!day040
- 8. Railsでmigrationかけた後にブランチをチェックアウトしてしまった時の復旧方法
- 9. 【Rails】DBから最新データが取得されていない時の対処法
- 10. begin rescue 文
- 11. LocalJumpError: unexpected return
- 12. ArgumentError: wrong number of arguments (given x, expected y)
- 13. [初心者用]Railsチュートリアル アプリ作成〜ユーザー登録
- 14. Bundler の Platform 一覧 (Mac OS / Linux版)
- 15. 100日後くらいに個人開発するぞ!day039
- 16. Rubyの基本
- 17. Ruby on Rails7.0.3 × MySQL8.0 のDocker環境構築
- 18. Ruby コーディングテスト 便利メソッド一覧
- 19. DockerでRuby on Railsの環境を構築する際のmysql.cnfのコマンド及びコード理解
- 20. Ruby + Victor でSVGお絵描き(簡単な散布図を描いてみた)
100日後くらいに個人開発するぞ!day041
## 今日は総合課題にチャレンジしてみた!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2632394/1caa244c-389b-efac-f533-876bf718ff5e.png)
## Ruby学習レッスンIコースを終了!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2632394/78c11293-acd0-fcba-68d4-458bf794cfa0.png)
## 今日の備忘録
* ◯の倍数は割ったときの余りが0かどうかで判別する
* 例:もし変数numberが3の倍数であれば”3の倍数です”と表記したい場合
* `if number % 3 == 0`
* ` puts “3の倍数です”`
* `end`
* 条件式で等号を用いる際は「==」にする
* ダメな例
* `if
技術面接 質疑応答まとめ[未経験転職]
技術面接があったため,振り返りとして質疑応答をまとめました.
解答について間違いがあればご指摘お願いします.## この記事を読んで分かること
オブジェクト指向やHTTPなどのwebの基礎知識に関する知識
## 前提
筆者は未経験でバックエンドエンジニアを志望しています.そのため質問内容はそれに関連したものになります.
# 質疑応答
## 質問1:RESTについて教えてください
webのアーキテクチャスタイルの一つ
クライアントがHTTPでリクエストすると,URIに対して定義したレスポンスが返される
RESTfulなWebサービスの性質として,以下の4つがあげられるアドレス可能性:URIによりリソースを一意に指し示す性質
接続性:リソースをリンクで接続することでアプリケーションを形成する性質
統一インターフェース:命令体系が(HTTPメソッドで)統一されている
ステートレス性:サーバーがクライアントのアプリケーションの状態を保存しない性質## 質問2:HTTPについて教えてください
クライアントがHTML文書などのリソースをサーバーから取り出すこ
「Rails パフォーマンスチューニング」viewファイルで起こるN + 1問題の修正方法
controller側ではなく、viewのeachでN + 1が発生していたので修正しました。
Ruby:3.1
Rails:7.0.2.3
MySQL:8.0## 仕様
– userはcompanyをお気に入り(favorite)登録することができる
– favoriteは中間テーブル
– companyに紐づくfavoriteの中に、ログイン中のuser.idと同じものがあればCSSのclassを追加上記の仕様を、この様に書いていた。
“`ruby:companies_controller.rb
class CompaniesController < ApplicationController def index @companies = Company.all.includes(:addresses).page params[:page] end end ``` ```erb:index.html.erb <% @companies.each do |company| %>
<% if company.favor
FakerBotがActiveHashのバリデーションにかかってしまう問題の解決法
FakerBotを使ってActiveHashを含んだテストコードを作成しようとした際、問題が発生してしまったので、その問題と解決法を書いていきます。
## 問題点:FactoryBotがバリデーションにかかるidを選択してしまい、テストに失敗する
“`ruby
class Prefecture < ActiveHash::Base self.data = [ { id: 1, name: '---' }, { id: 2, name: '北海道' }, { id: 3, name: '青森県' }, ``` ```ruby class Item < ApplicationRecord extend ActiveHash::Associations::ActiveRecordExtensions validates :prefecture_id, numericality: { other_than: 1 } ``` 選択肢の'---'に該当するprefecture_id: 1を選択すると、バリデーションにかかるように設定してあります。 ```ru
【Rails】ActionCableの実装〜mapメソッドについて〜
## はじめに
実装の流れは長くなるので省略させていただきます。
自分が疑問に思ってノートに記録した物を記事にしていきます。## 前提条件
Ruby 2.6.3
Rails 6.1.5## 外部キー制約
references型の特徴
**・外部キー制約がつかない。そのため、foreign_key: trueをつける。
・_idが省略される**中間テーブルに使用です。
“`php:migrate
# 外部キー制約:外部にその値を主キーとして持つ他のテーブルがあること
t.references :chat_room, null: false, foreign_key: true
“`## mapメソッド
中間テーブルのChatRoomUserから、条件を書いて配列を作ることで、
createする際の条件分岐に使用。ログインユーザーが存在しているチャットルームデータを取得
“`php:chat_rooms_controller.rb
ChatRoomUser.where(user_id: current_user.id).map(&:chat_room)
`
Railsのヘヴィな重い一覧ページを改修したお話。
# 問題
User一覧画面、表示までに**20秒**ほどかかっていた。
メモリ食い過ぎで*サーバーが落ちる*こともあった# 結論
一覧画面に**不必要なモーダル**の切り分け
ハイパー**N+1**問題
を解決することで表示時間が1秒ほどになった。## 詳細
一部抜粋したコード(説明に不必要な箇所は省いています)
“`ruby:customers_controller.rb
CustomersController
def index
@customers = Customer.all
end
“`“`erb:index.html.erb
<% @customers.each do |customer| %><%= customer.mail %> <%= customer.foobar %> <%= customer.hoge %>