2021-09-22から1日間の記事一覧

select, map, collect

select コレクションのサブセット(部分集合)を取得する。select!では元のコレクションが改変される。 i = [1,2,3,4,5] i.select {|x| x % 2 == 0} # => [2, 4] map コレクションの各要素に操作を実行し、更新されたコレクションを取得する。map!では元のコ…

find, find_by, where 〜ActiveRecord::Relationとクエリインターフェース〜

find idを引数にとり、マッチした一件を返す 例外を起こす find_by キーと値を引数にとり、マッチした最初のレコードを返す nilを返す(find_by!は例外を起こす) where キーと値を引数にとり、マッチしたレコードのコレクション(ActiveRecord::Relationの…

Rubyの変数

インスタンス変数 クラス定義内で定義しない(するとクラスインスタンス変数になる) インスタンスに関連付けられる変数(インスタンスごとに独立した変数)なのでクラスメソッドからはアクセスできない あるインスタンスで属性値を変更しても、他のインスタ…

includeとextend

include インスタンスメソッドとしてアクセスできる。 クラスのインスタンスメソッドをモジュールで拡張する場合。 extend クラスメソッドとしてアクセスできる。 クラスメソッドなどの拡張だけが目的である場合 module Greetings def hello puts 'hello' en…

【Ruby】splat演算子

メソッドに渡される引数の数を事前に決めておきたくない場合に使う。可変長引数を取れるようにする。 def do_sth(*input) input.each {|x| puts x } end do_sth(3,4,5) # => 3 # => 4 # => 5 double splat演算子:キーバリューを引数にとる def do_sth(**inp…

【Ruby】yield

yield メソッドに渡されたブロックにアクセスする。 def puts_stuff puts 'first line' yield if block_given? puts 'third line' yield if block_given? end puts_stuff { puts 'its me' } # => first line # => its me # => third line # => its me

Rack

Rackとは アプリケーションサーバとRubyフレームワークをつなぐインターフェースを提供しているライブラリ。 Rack登場以前はアプリケーションサーバとフレームワークが密結合しており、組み合わせによってはデプロイ方法が複雑になってしまっていた。Rackの…

コールバック

オブジェクトのライフサイクルの中でメソッドを実行するフック。

count, length, size

count レコードの件数をカウントするSQLクエリを実行する。DBとメモリでレコード数が違う可能性がある場合に有用。 length メモリ上のコレクションに含まれるアイテムの件数を返す。データベーストランザクションを実行しない分、countより高速。 size lengt…

ActiveRecordマイグレーション

マイグレーションの概要 一つ一つのマイグレーションはデータベースの新しいバージョンとみなすことができる。スキーマは最初空の状態から始まり、マイグレーションによる変更が加わるたびにテーブル、カラム、エントリが追加される。マイグレーションの実行…