2022-05-01から1ヶ月間の記事一覧

rails:更新系処理の悲観的ロックのサンプル

掲題を実現する場合のサンプル。 処理で更新されるテーブルのモデルに、以下のようなメソッドを実装。 class BatchExecUpdateDate < ApplicationRecord # batch_exec_update_dates # # id :bigint(8) not null, primary key # proc_type :integer not null #…

RSpec:よく使うmatcherメモ

付け足し付け足ししていく予定です。 インスタンスの内容のテスト expect(section).to have_attributes(name: 'default') expect(section.is_valid).to be_truthy expect(section.retired_at).to be nil 件数に変更がない(unchange推奨) expect{subject}.t…

rails:コールバック処理

あらかじめ定義しておき、必要なタイミングで自動で動く処理。 以下だと、Companyがcreateされると、直後にSectionもcreateされる。 (Section.name を仮設定しているのもコールバック) # app/model/company.rb class Company < ApplicationRecord has_many…

ruby:ハッシュ操作の応用1

以下のようなハッシュを画面に返すとする。 # 画面に引き渡すインスタンス変数(Hash) # @conpany_inf カンパニー情報(ヘッダ情報) # { # company_name [string] カンパニー名 # company_started_at [datetime] 創設日 # staff_count [integer] スタッフ人…

rails:コンソールからFactoryBotでデータ作成する

Rspec実行時以外、railsコンソールからもFactoryBotを使ってデータ作成できる。 以下は例。 > c = Company.First > s = FactoryBot.create(:staff, name: 'kenji', company: c) FactoryBot実装済みが前提。 戻り値はインスタンス。

rails:判定ロジックサンプル備忘1

以下のようなケースの判定ロジックを考える。 モデルで以下のように定数定義。 app/models/worker.rb class Worker < ApplicationRecord WORKER_TYPES = { TEACHER: 1, PILOT: 2 }.each_value(&:freeze).freeze end デコレータは以下のように継承して定義。 …

ruby:ハッシュ操作の基本

ハッシュの基本操作。 >> seeds = {"unk"=>0, "par"=>3, "rog"=>1} => {"unk"=>0, "par"=>3, "rog"=>1} >> seeds["par"] => 3 >> seeds_s = {unk: 0, par: 3, rog: 1} => {:unk=>0, :par=>3, :rog=>1} >> seeds_s[:par] => 3 >> a = seeds_s.fetch(:par) => …

ruby:配列(Array)操作の基本

配列の基本操作。 >> names = ['Luf','Zor','Nam'] => ["Luf", "Zor", "Nam"] >> names[0] => "Luf" >> names.size => 3 >> names[4] = 'Uso' => "Uso" >> names => ["Luf", "Zor", "Nam", nil, "Uso"] >> names.push('San') => ["Luf", "Zor", "Nam", nil, …

rails:検索時にリテラルのselect句やjoin句を使う

一般的だと思うけど、覚書。 controllerではモデルのリテラルを指定して検索。 controller/tallent_controller.rb class TallentController < ApplicationController def index @tallents = Tallent.select(Tallent::SELECT_STR) .joins(Tallent::JOIN_STR) …

Markdown:記法メモ

特殊文字をそのまま表示 バックスラッシュでエスケープします。 \``` ``` コード(pre記法) 整形済みテキストの記法 HTMLの<pre>タグに相当 行頭に4つ以上の半角スペースか1つ以上のタブをつける もしくは、段落の前後に「```」ではじまる行をつける 「```ruby」の</pre>…