Closed14

Ruby・Railsのメソッド一覧

Haruya IzumiHaruya Izumi

include?

配列に対して、渡された引数が含まれていたらtrue,含まれてなければfalseといった真偽値を返す。

array.include?(obj)
# 例
[1, 2, 3, 99].include?(99)
=> true
[1, 2, 3, 99].include?(100)
=> false
Haruya IzumiHaruya Izumi

compact

arrayにnilが含まれていれば、そのnilを除いた配列が返り値として返す。

array.compact
# 例
[1, 2, nil, 3, 99, nil].compact
=> [1, 2, 3, 99]
Haruya IzumiHaruya Izumi

merge(チェリー本より引用)

mergeメソッドを使うことによって、ハッシュリテラル内({ japan: 'yen', h})のほかのハッシュのキーと値({ us: 'dollar', india: 'rupee' })を展開できる。

hash = { us: 'dollar', india: 'rupee' }

{ japan: 'yen' }.merge(hash) #=> {:japan=>"yen", :us=>"dollar", :india=>"rupee"}
Haruya IzumiHaruya Izumi

Railsのmergeを使用するタイミング

『ユーザから受け取ったparamsにはないけど、レコード作成時に追加したい値がある場合はmergeメソッドで含めることができる』

 def post_params
    params.require(:post).permit(:title,:body)
    .merge(user_id:current_user.id)
 end
Haruya IzumiHaruya Izumi

join

joinの引数に指定した文字を区切り文字として配列の各要素を連結させて文字列型で返り値を返す。
何も引数を指定しなければ、区切り文字を使用せずに要素を連結させた文字列として返り値を返す。

array.join("")
# 例
[1, 2, 3, 4].join(",")
=> "1,2,3,4"

[1, 2, 3, 4].join("")
=> "1234"
Haruya IzumiHaruya Izumi

strip

レシーバーの先頭、もしくは末尾に空白文字が存在する場合、それらを除去して新しい文字列を返す。

string.strip
# 例
"  プログラミングをしよう   ".strip
=> "プログラミングしよう"
Haruya IzumiHaruya Izumi

split

splitメソッドを使えば、以下のコードのように文字列をカンマ(,)で分割し、その分割した文字列を要素とした配列で取得することができる。

# split([sep[, limit]])
"文字列".split(区切り文字, 分割数)

# デフォルトでは空白に沿って要素を区切る
color = "blue yellow red"
color.split     
["blue", "yellow", "red"]

"Apple,Orange,Cherry,Banana".split(',')
=> ["Apple", "Orange", "Cherry", "Banana"]

"AppleAndOrangeAndCherryAndBanana".split('And')
=> ["Apple", "Orange", "Cherry", "Banana"]
Haruya IzumiHaruya Izumi

unshift/push

unshiftは、引数であるオブジェクトを配列の先頭に入れる。

obj = [1, 2, 3, 4]
obj.unshift(5)
=> [5, 1, 2, 3, 4]

pushは、引数であるオブジェクトを配列の末尾に入れる。

obj = [1, 2, 3, 4]
obj.push(5)
=> [1, 2, 3, 4, 5]
Haruya IzumiHaruya Izumi

inject

配列の中の要素を繰り返し計算するときに使う。

obj = [1, 2, 3, 4, 5]
obj.inject() { |sum, n| sum += n }
=> 15

#初期値を設定できる。
obj = [1, 2, 3, 4, 5]
obj.inject(10) { |sum, n| sum += n }
=> 25
Haruya IzumiHaruya Izumi

map

要素の数だけブロックを繰り返し、各要素に対してブロックを評価した新しい配列を返す。

["suzuki", "tanaka", "yamada"].map { |obj| obj.upcase }
=> ["SUZUKI", "TANAKA", "YAMADA"] 

# 短く記述できる。
["suzuki", "tanaka", "yamada"].map(&:upcase)
=> ["SUZUKI", "TANAKA", "YAMADA"] 
Haruya IzumiHaruya Izumi

select

ブロックの戻り値が真のものだけを配列として返す。

obj = ["suzuki", "tanaka", "yamada", 3, 8]
obj.select { |i| i.class == String }
=> ["suzuki", "tanaka", "yamada"]
Haruya IzumiHaruya Izumi

reject

配列の戻り値が偽の要素だけを返します。

obj = ["suzuki", "tanaka", "yamada", 3, 8]
obj.select { |i| i.class == String }
=> [3, 8]
このスクラップは2022/03/31にクローズされました