2020-06-01から1ヶ月間の記事一覧
深い階層のディレクトリも作成可能
get以外リクエストを送信する際、authenticity_tokenというパラメータをつける必要がある。 一時的にauthenticity_tokenが無くても送信できるようにするにはコントローラーにprotect_from_forgery :except => ["アクション名"]を記述する。 参考 https://blo…
値の更新をテストする際はreloadを使ってインスタンスの値を更新する必要がある。 参考 https://qiita.com/ry_2718/items/3ffdf7c24857fc5724c2
開発終わったらリモートブランチを消す N+1問題(eachを使うところ注意) 変数名(複数のものは複数形) コントローラーのロジックをモデルに移す 曖昧な仕様の確認 itの中にはexpectだけ eachなどイテレーションで大量にsaveする場合はbulkinsert使う ifな…
メソッドチェーンなどで長くなった一連の処理を別名をつけて短い名前で呼び出せるようにしたもの。モデルで定義する。 複雑なSQLを記述する時に便利。 スコープを定義する際、別で定義したスコープを使うこともできる。 #モデルで定義 class User < ActiveRe…
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", "…
macの場合command+/で選択している部分を一括コメントアウトできる。コメントアウトを外したい場合も同じ動作でできる
v-bindディレクティブは省略できる <a :href="url">google</a>
json形式の値をrubyのオブジェクトに変換した時にハッシュのキーは文字列として扱われる。 symbolize_namesを使うとハッシュのキーをシンボルに変換できる。 JSON.parse(response.body, {:symbolize_names => true}) 参考 https://hirakiuc.hatenablog.com/e…
git checkoutでブランチを変更するとワーキングツリーやインデックスにある変更内容(まだコミットしてない内容)は移動先のブランチに反映されてしまう。 その為移動前のブランチに作業を残したいが作業が途中でコミットしたくない場合などにgit stashで作…
pull, pushは同名のbranchでしかしないようにする。 開発の流れ(githubを使わない場合) 1. ローカルでmasterブランチから開発ブランチを作成 2. 開発後ローカルのmasterブランチでリモートのmasterブランチをpull 3.ローカルの開発ブランチをローカルのmaste…
同じコントローラーの中の重複している処理はモデルに書く。 複数のコントローラーで必要な処理はconcern、またはapplication_controller.rbに書く。 またはmoduleにしてファイルを新しく作っても良い。 helperはviewの中のロジックを書く。
主なitの役割はexpectの実行。できればそれ以外はletかbeforeで済ませると可読性は上がる。
クラスメソッドを定義する際はselfをメソッド名の前につける。 クラスメソッドはmodelクラスのレコードを検索するとか、作成されたインスタンスの数をカウントするとか、クラスの新しいインスタンスを作る等、個々のインスタンスには紐づけずクラスに対して…
pluckメソッドは、テーブルから任意のカラム(列)のデータを取得して、配列として返してくれるメソッドです。 モデル.pluck(カラム名, ..) User.create(name:"幸田",prefecture:"香川") User.create(name:"水島",prefecture:"東京") User.create(name:"飯田…
多くのデータを一度のクエリの発行でinsertできる。eachでループを回してデータを保存する際に時間を短くできる。 railsではactiverecord-importというgemを使う。 array = [] users.each do |user| array << User.new(name: user.name) end User.import arr…
オブジェクト.freezeでレシーバーオブジェクトを破壊的メソッドで変更不可にする。代入でオブジェクト(変数)を変更することは可能