tusbasaのブログ

業務や勉強中に調べたことを自分用にメモするブログ

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

FileUtils.mkdir_p

深い階層のディレクトリも作成可能

【rails】rails consoleでpostリクエストを送信際のCSRFの対応について

get以外リクエストを送信する際、authenticity_tokenというパラメータをつける必要がある。 一時的にauthenticity_tokenが無くても送信できるようにするにはコントローラーにprotect_from_forgery :except => ["アクション名"]を記述する。 参考 https://blo…

【rspec】reload

値の更新をテストする際はreloadを使ってインスタンスの値を更新する必要がある。 参考 https://qiita.com/ry_2718/items/3ffdf7c24857fc5724c2

開発で気を付けること(メモ)

開発終わったらリモートブランチを消す N+1問題(eachを使うところ注意) 変数名(複数のものは複数形) コントローラーのロジックをモデルに移す 曖昧な仕様の確認 itの中にはexpectだけ eachなどイテレーションで大量にsaveする場合はbulkinsert使う ifな…

【rails】モデルのscopeについて

メソッドチェーンなどで長くなった一連の処理を別名をつけて短い名前で呼び出せるようにしたもの。モデルで定義する。 複雑なSQLを記述する時に便利。 スコープを定義する際、別で定義したスコープを使うこともできる。 #モデルで定義 class User < ActiveRe…

【ruby】group_by(&:itself)

group_byはブロック文の返り値毎にグループ分けを行う names = %w(ruby python java c++ php javascript perl lisp haskell) group = names.group_by do |name| name[0] # 先頭文字の種類によって分類 end p group {"r"=>["ruby"], "p"=>["python", "php", "…

【vscode】一括コメントアウト

macの場合command+/で選択している部分を一括コメントアウトできる。コメントアウトを外したい場合も同じ動作でできる

【vue.js】v-bind

v-bindディレクティブは省略できる <a :href="url">google</a>

symbolize_names

json形式の値をrubyのオブジェクトに変換した時にハッシュのキーは文字列として扱われる。 symbolize_namesを使うとハッシュのキーをシンボルに変換できる。 JSON.parse(response.body, {:symbolize_names => true}) 参考 https://hirakiuc.hatenablog.com/e…

git stashについて

git checkoutでブランチを変更するとワーキングツリーやインデックスにある変更内容(まだコミットしてない内容)は移動先のブランチに反映されてしまう。 その為移動前のブランチに作業を残したいが作業が途中でコミットしたくない場合などにgit stashで作…

【git】pull pushについて

pull, pushは同名のbranchでしかしないようにする。 開発の流れ(githubを使わない場合) 1. ローカルでmasterブランチから開発ブランチを作成 2. 開発後ローカルのmasterブランチでリモートのmasterブランチをpull 3.ローカルの開発ブランチをローカルのmaste…

【rails】コントローラーの共通処理

同じコントローラーの中の重複している処理はモデルに書く。 複数のコントローラーで必要な処理はconcern、またはapplication_controller.rbに書く。 またはmoduleにしてファイルを新しく作っても良い。 helperはviewの中のロジックを書く。

【rspec】 itの中で書くべきこと

主なitの役割はexpectの実行。できればそれ以外はletかbeforeで済ませると可読性は上がる。

【ruby】クラスメソッド

クラスメソッドを定義する際はselfをメソッド名の前につける。 クラスメソッドはmodelクラスのレコードを検索するとか、作成されたインスタンスの数をカウントするとか、クラスの新しいインスタンスを作る等、個々のインスタンスには紐づけずクラスに対して…

【ruby】pluckメソッド

pluckメソッドは、テーブルから任意のカラム(列)のデータを取得して、配列として返してくれるメソッドです。 モデル.pluck(カラム名, ..) User.create(name:"幸田",prefecture:"香川") User.create(name:"水島",prefecture:"東京") User.create(name:"飯田…

【rails】bulk insert

多くのデータを一度のクエリの発行でinsertできる。eachでループを回してデータを保存する際に時間を短くできる。 railsではactiverecord-importというgemを使う。 array = [] users.each do |user| array << User.new(name: user.name) end User.import arr…

【ruby】freezeメソッド

オブジェクト.freezeでレシーバーオブジェクトを破壊的メソッドで変更不可にする。代入でオブジェクト(変数)を変更することは可能