アクティブサポート(activesupport)
アクティブサポートとは
説明
Ruby標準ライブラリの拡張
ビュー以外でヘルパーを呼び出す
説明
コントローラやモデル、パッチ処理など、ビュー以外でヘルパーを使いたい場合
使い方
ApplicationController.helpers.メソッド名
例
ApplicationController.helpers.user_path
真偽判定
説明
条件式を評価しtrueかnilやfalseを判定
使い方
nil?
変数.nil?
Rubyの標準メソッド。nilの場合のみtrueを返し、それ以外はfalse
empty?
変数.empty?
Rubyの標準メソッド。空の文字列や空の配列の場合にtrueを返す。nilに対して呼び出すとNoMethodErrorが発生
blank?
変数.blank?
nil? + empty? のようなメソッド。nilまたは空のオブジェクトをチェック nil, “”, “ “(半角スペースのみ), 空の配列, 空のハッシュのときにfalseを返します Railsで拡張されたメソッドで、Rubyのみでは使えないのでご注意ください
present?
変数.present?
!blank? を実行するメソッド。if 変数.present?とunless 変数.blank?は同じ意味 nil, “”, “ “(半角スペースのみ), 空の配列, 空のハッシュのときにfalseを返します Railsで拡張されたメソッドで、Rubyのみでは使えないのでご注意ください
例
@pages = Page.all
if @pages.present?
...
else
puts "no pages"
end
複数形へ変換
説明
文字列内の単語の複数形
使い方
名詞.pluralize([個数, ロケール])
例
postの複数形
'post'.pluralize
# "posts"
octopusの複数形
'octopus'.pluralize
# "octopi"
sheepの複数形
'sheep'.pluralize
# "sheep"
wordsの複数形
'words'.pluralize
# "words"
単語から複数形
'the blue mailman'.pluralize
# "the blue mailmen"
CamelOctopusの複数形
'CamelOctopus'.pluralize
# "CamelOctopi"
appleの単数形
'apple'.pluralize(1)
# "apple"
appleの複数形
'apple'.pluralize(2)
# "apples"
ロケール指定
'ley'.pluralize(:es)
# "leyes"
ソースコード
単数形へ変換
説明
複数形の名詞を単数形に変換
「config/initializers/inflections.rb」に定義を追加することによって、不可算名詞の追加が可能
使い方
singularize(文字列, ロケーション=:en)
例
複数形の名詞を単数形に変換
singularize('posts')
# "post"
不可算名詞
singularize('octopi')
# "octopus"
不可算名詞
singularize('sheep')
# "sheep"
キャメルケース
singularize('CamelOctopi')
# "CamelOctopus"
ロケーション指定
singularize('leyes', :js)
# "ley"
ソースコード
クラス名からファイル名へ変換
説明
クラス名からファイル名へ変換
「config/initializers/inflections.rb」に定義を追加することによって追加
使い方
underscore(文字列)
例
クラス名からファイル名へ変換
underscore("Product")
# "product"
アッパーキャメルケース
underscore("AdminUser")
# "admin_user"
メソッド呼び出し
underscore("Backoffice::Session")
# "backoffice/session"
ソースコード
文字列をキャメルケースに変換
説明
文字列をキャメルケースに変換
ファイル名からクラス名へ変換など
使い方
camelize(文字列, アッパーキャメルか=true)
オプション
オプション | 説明 | デフォルト値 |
---|---|---|
:lower | ローワーキャメルケース | |
:upper | キャメルケース | o |
例
キャメルケース
camelize('product')
# "Product"
「/」を含む文字の変換
camelize('backoffice/session')
# "Backoffice::Session"
ローワーキャメルケース
camelize('active_record'. :lower)
# "activeRecord"
ソースコード
モデルクラス名からテーブル名へ変換
説明
モデル名からテーブル名へ変換
「config/initializers/inflections.rb」に定義を追加することによって追加
使い方
tableize(文字列)
例
モデル名からテーブル名へ変換
tableize("Page")
# "pages"
アッパーキャメルケース
tableize("AdminUser")
# "admin_users"
ソースコード
テーブル名からモデルクラス名へ変換
説明
テーブル名からモデル名へ変換
「config/initializers/inflections.rb」に定義を追加することによって可能
使い方
classify(テーブル名)
例
classify("people")
# "Person"
ソースコード
日付関連
tomorrow
説明
翌日の日付を取得
使い方
日付.tomorrow
例
翌日の日付を取得
Date.new(2011, 12, 24).tomorrow
# Sun, 25 Dec 2011
その他
標準関数で代替
Date.new(2011, 12, 24) + 1
# Sun, 25 Dec 2011
yesterday
説明
前日の日付を取得
使い方
日付.yesterday
例
翌日の日付を取得
Date.new(2011, 12, 24).yesterday
# Fri, 23 Dec 2011
その他
標準関数で代替
Date.new(2011, 12, 24) - 1
# Fri, 23 Dec 2012
prev_year
説明
前の年の日付を取得
使い方
日付.prev_year
例
去年の日付を取得
Date.new(2011, 12, 24).prev_year
# Fri, 24 Dec 2010
その他
標準関数で代替
Date.new(2011, 12, 24) << 12
# Fri, 24 Dec 2010
next_year
説明
次の年の日付を取得
使い方
日付.next_year
例
来年の日付を取得
Date.new(2011, 12, 24).next_year
# Mon, 24 Dec 2012
その他
標準関数で代替
Date.new(2011, 12, 24) >> 12
# Mon, 24 Dec 2012
prev_month
説明
前の月の日付を取得
使い方
日付.prev_month
例
先月の日付を取得
Date.new(2011, 12, 24).prev_month
# Thu, 24 Nov 2011
その他
標準関数で代替
Date.new(2011, 12, 24) << 1
# Thu, 24 Nov 2011
next_month
説明
次の月の日付を取得
使い方
日付.next_month
例
来月の日付を取得
Date.new(2011, 12, 24).next_month
# Tue, 24 Jan 2012
その他
標準関数で代替
Date.new(2011, 12, 24) >> 1
# Tue, 24 Jan 2012
beginning_of_week
説明
週の初めの日付を取得
使い方
日付.beginning_of_week
例
今週の終わりの日付を取得
Date.new(2011, 12, 24).beginning_of_week
# Mon, 19 Dec 2011
end_of_week
説明
週の終わりの日付を取得
使い方
日付.end_of_week
例
今週の終わりの日付を取得
Date.new(2011, 12, 24).end_of_week
# Sun, 25 Dec 2011
next_week
説明
来週の日付を取得
使い方
日付.next_week
例
来週の初めの日付を取得
Date.new(2011, 12, 24).next_week
# Mon, 26 Dec 2011
来週の土曜日の日付を取得
Date.new(2011, 12, 24).next_week(:saturday)
# Sat, 31 Dec 2011
prev_week
説明
先週の日付を取得
使い方
日付.prev_week
例
先週の初めの日付を取得
Date.new(2011, 12, 24).prev_week
# Mon, 12 Dec 2011
先週の土曜日の日付を取得
Date.new(2011, 12, 24).prev_week
# Sat, 17 Dec 2011
beginning_of_month
説明
月の初めの日付を取得
使い方
日付.beginning_of_month
例
今月の初めの日付を取得
Date.new(2011, 12, 24).beginning_of_month
# Thu, 01 Dec 2011
end_of_month
説明
月の終わりの日付を取得
使い方
日付.end_of_month
例
今月の終わりの日付を取得
Date.new(2011, 12, 24).end_of_month
# Sat, 31 Dec 2011
beginning_of_quarter
説明
四半期の初めの日付を取得
使い方
日付.beginning_of_quarter
例
四半期の初めの日付を取得
Date.new(2011, 12, 24).beginning_of_quarter
# Sat, 01 Oct 2011
end_of_quarter
説明
四半期の終わりの日付を取得
使い方
日付.end_of_quarter
例
四半期の終わりの日付を取得
Date.new(2011, 12, 24).end_of_quarter
# Sat, 31 Dec 2011
beginning_of_year
説明
年の初めの日付を取得
使い方
日付.beginning_of_year
例
今年の初めの日付を取得
Date.new(2011, 12, 24).beginning_of_year
# Sat, 01 Jan 2011
end_of_year
説明
年の終わりの日付を取得
使い方
日付.end_of_year
例
今年の終わりの日付を取得
Date.new(2011, 12, 24).end_of_year
# Sat, 31 Dec 2011
years_ago
説明
○年前の日付を取得
使い方
日付.years_ago(年数)
例
10年前の日付を取得
Date.new(2011, 12, 24).years_ago(10)
# Mon, 24 Dec 2001
years_ago
説明
○年前の日付を取得
使い方
日付.years_ago(年数)
例
10年前の日付を取得
Date.new(2011, 12, 24).years_ago(10)
# Mon, 24 Dec 2001
years_since
説明
○年後の日付を取得
使い方
日付.years_since(年数)
例
10年後の日付を取得
Date.new(2011, 12, 24).years_since(10)
# Fri, 24 Dec 2021
months_ago
説明
○月前の日付を取得
使い方
日付.months_ago(月数)
例
2月前の日付を取得
Date.new(2011, 12, 24).months_ago(2)
# Mon, 24 Oct 2011
months_since
説明
○月後の日付を取得
使い方
日付.months_since(月数)
例
2月後の日付を取得
Date.new(2011, 12, 24).months_since(2)
# Fri, 24 Feb 2012
weeks_ago
説明
○週前の日付を取得
使い方
日付.weeks_ago(週数)
例
2週前の日付を取得
Date.new(2011, 12, 24).weeks_ago(2)
# Sat, 10 Dec 2011
advance
説明
特定の日時前の日付を取得
使い方
日付.advance(日付のハッシュ)
例
2ヶ月後の2日前の日付を取得
Date.new(2011, 12, 24).advance(months: 2, days: -2)
# Wed, 22 Feb 2011
change
説明
特定の日時前の日付を取得
使い方
日付.change(日付のハッシュ)
例
2ヶ月後の2日前の日付を取得
Date.new(2011, 12, 24).change(months: 2, days: -2)
# Sat, 24 Dec 2011
日付の計算
説明
日付を足したり、引いたりする
使い方
日付 (+ or -) 日付
例
2日後の日付を計算
Date.new(2011, 12, 24) + 2.day
# Mon, 26 Dec 2011
1年前の日付を計算
Date.new(2011, 12, 24) - 1.year
# Fri, 24 Dec 2010
beginning_of_day
説明
初めの時刻を取得
使い方
日付.beginning_of_day
例
今日の初めの時刻を取得
Date.new(2011, 12, 24).beginning_of_day
# Sat, 24 Dec 2011 00:00:00 JST +09:00
beginning_of_hour
説明
初めの分を取得
使い方
日付.beginning_of_hour
例
今日の初めの時刻を取得
Date.new(2011, 12, 24, 10, 55, 55).beginning_of_hour
# Sat, 24 Dec 2011 10:00:00 JST +09:00
end_of_day
説明
終わりの時刻を取得
使い方
日付.end_of_day
例
今日の1秒後の時刻を取得
Date.new(2011, 12, 24).end_of_day
# Sat, 24 Dec 2011 23:59:59 JST +09:00
ago
説明
○秒前の時刻を取得
使い方
日付.ago(秒数)
例
今日の1秒前の時刻を取得
Date.new(2011, 12, 24).ago(1)
# Sat, 23 Dec 2011 23:59:59 JST +09:00
since
説明
○秒後の時刻を取得
使い方
日付.since(秒数)
例
今日の1秒後の時刻を取得
Date.new(2011, 12, 24).since(1)
# Sat, 24 Dec 2011 00:00:01 JST +09:00
日時関連
説明
日時関連の便利関数
tomorrow
説明
翌日の日時を取得
使い方
日時.tomorrow
例
翌日の日時を取得
DateTime.new(2011, 12, 24, 00, 00, 00).tomorrow
# Sun, 25 Dec 2011 00:00:00 +0000
その他
標準関数で代替
DateTime.new(2011, 12, 24, 00, 00, 00) + 1
# Sun, 25 Dec 2011 00:00:00 +0000
yesterday
説明
前日の日時を取得
使い方
日時.yesterday
例
前日の日時を取得
DateTime.new(2011, 12, 24).yesterday
# Fri, 23 Dec 2011 00:00:00 +0000
その他
標準関数で代替
DateTime.new(2011, 12, 24) - 1
# Fri, 23 Dec 2011 00:00:00 +0000
prev_year
説明
去年の日時を取得
使い方
日時.prev_year
例
去年の日時を取得
DateTime.new(2011, 12, 24, 00, 00, 00).prev_year
# Fri, 24 Dec 2010 00:00:00 +0000
その他
標準関数で代替
DateTime.new(2011, 12, 24, 00, 00, 00) << 12
# Fri, 24 Dec 2010 00:00:00 +0000
next_year
説明
来年の日時を取得
使い方
日時.next_year
例
来年の日時を取得
DateTime.new(2011, 12, 24, 00, 00, 00).next_year
# Mon, 24 Dec 2012 00:00:00 +0000
その他
標準関数で代替
DateTime.new(2011, 12, 24, 00, 00, 00) >> 12
# Mon, 24 Dec 2012 00:00:00 +0000
prev_month
説明
先月の日時を取得
使い方
日時.prev_month
例
先月の日時を取得
DateTime.new(2011, 12, 24, 00, 00, 00).prev_month
# Thu, 24 Nov 2011 00:00:00 +0000
その他
標準関数で代替
DateTime.new(2011, 12, 24, 00, 00, 00) << 1
# Thu, 24 Nov 2011 00:00:00 +0000
next_month
説明
来月の日時を取得
使い方
日時.next_month
例
来月の日時を取得
DateTime.new(2011, 12, 24, 00, 00, 00).next_month
# Tue, 24 Jan 2012 00:00:00 +0000
その他
標準関数で代替
DateTime.new(2011, 12, 24, 00, 00, 00) >> 1
# Tue, 24 Jan 2012 00:00:00 +0000
beginning_of_week
説明
週の初めの日時を取得
使い方
日時.beginning_of_week
例
今週の終わりの日時を取得
DateTime.new(2011, 12, 24, 00, 00, 00).beginning_of_week
# Mon, 19 Dec 2011 00:00:00 +0000
end_of_week
説明
週の終わりの日時を取得
使い方
日時.end_of_week
例
今週の終わりの日時を取得
DateTime.new(2011, 12, 24, 00, 00, 00).end_of_week
# Sun, 25 Dec 2011 23:59:59 +0000
next_week
説明
次の週の日時を取得
使い方
日時.next_week
例
来週の初めの日時を取得
DateTime.new(2011, 12, 24, 00, 00, 00).next_week
# Mon, 26 Dec 2011 00:00:00 +0000
来週の土曜日の日時を取得
DateTime.new(2011, 12, 24, 00, 00, 00).next_week(:saturday)
# Sat, 31 Dec 2011 00:00:00 +0000
prev_week
説明
前の週の日時を取得
使い方
日時.prev_week
例
先週の初めの日時を取得
DateTime.new(2011, 12, 24, 00, 00, 00).prev_week
# Mon, 12 Dec 2011 00:00:00 +0000
先週の土曜日の日時を取得
DateTime.new(2011, 12, 24, 00, 00, 00).prev_week
# Sat, 17 Dec 2011 00:00:00 +0000
beginning_of_month
説明
月の初めの日時を取得
使い方
日時.beginning_of_month
例
今月の初めの日時を取得
DateTime.new(2011, 12, 24, 00, 00, 00).beginning_of_month
# Thu, 01 Dec 2011 00:00:00 +0000
end_of_month
説明
月の終わりの日時を取得
使い方
日時.end_of_month
例
今月の終わりの日時を取得
DateTime.new(2011, 12, 24, 00, 00, 00).end_of_month
# Sat, 31 Dec 2011 23:59:59 +0000
beginning_of_quarter
説明
四半期の初めの日時を取得
使い方
日時.beginning_of_quarter
例
四半期の初めの日時を取得
DateTime.new(2011, 12, 24, 00, 00, 00).beginning_of_quarter
# Sat, 01 Oct 2011 00:00:00 +0000
end_of_quarter
説明
四半期の終わりの日時を取得
使い方
日時.end_of_quarter
例
四半期の終わりの日時を取得
DateTime.new(2011, 12, 24, 00, 00, 00).end_of_quarter
# Sat, 31 Dec 2011 23:59:59 +0000
beginning_of_year
説明
年の初めの日時を取得
使い方
日時.beginning_of_year
例
今年の初めの日時を取得
DateTime.new(2011, 12, 24, 00, 00, 00).beginning_of_year
# Sat, 01 Jan 2011 00:00:00 +0000
end_of_year
説明
年の終わりの日時を取得
使い方
日時.end_of_year
例
今年の終わりの日時を取得
DateTime.new(2011, 12, 24, 00, 00, 00).end_of_year
# Sat, 31 Dec 2011 23:59:59 +0000
years_ago
説明
○年前の日時を取得
使い方
日時.years_ago(年数)
例
10年前の日時を取得
DateTime.new(2011, 12, 24, 00, 00, 00).years_ago(10)
# Mon, 24 Dec 2001 00:00:00 +0000
years_since
説明
○年後の日時を取得
使い方
日時.years_since(年数)
例
10年後の日時を取得
DateTime.new(2011, 12, 24, 00, 00, 00).years_since(10)
# Fri, 24 Dec 2021 00:00:00 +0000
months_ago
説明
○月前の日時を取得
使い方
日時.months_ago(月数)
例
2月前の日時を取得
DateTime.new(2011, 12, 24, 00, 00, 00).months_ago(2)
# Mon, 24 Oct 2011 00:00:00 +0000
months_since
説明
○月後の日時を取得
使い方
日時.months_since(月数)
例
2月後の日時を取得
DateTime.new(2011, 12, 24, 00, 00, 00).months_since(2)
# Fri, 24 Feb 2012 00:00:00 +0000
weeks_ago
説明
○週前の日時を取得
使い方
日時.weeks_ago(週数)
例
2週前の日時を取得
DateTime.new(2011, 12, 24, 00, 00, 00).weeks_ago(2)
# Sat, 10 Dec 2011 00:00:00 +0000
advance
説明
前の日時を取得
使い方
日時.advance(日時のハッシュ)
例
2ヶ月後の2日前の日時を取得
DateTime.new(2011, 12, 24, 00, 00, 00).advance(months: 2, days: -2)
# Wed, 22 Feb 2011 00:00:00 +0000
change
説明
前の日時を取得
使い方
日時.change(日時のハッシュ)
例
2ヶ月後の2日前の日時を取得
DateTime.new(2011, 12, 24, 00, 00, 00).change(months: 2, days: -2)
# Sat, 24 Dec 2011 00:00:00 +0000
日時の計算
説明
日時を足したり、引いたりする
使い方
日時 (+ or -) 日時
例
2日後の日時を計算
DateTime.new(2011, 12, 24, 00, 00, 00) + 2.day
# Mon, 26 Dec 2011 00:00:00 +0000
1年前の日時を計算
DateTime.new(2011, 12, 24, 00, 00, 00) - 1.year
# Fri, 24 Dec 2010 00:00:00 +0000
beginning_of_day
説明
日の初めの時刻を取得
使い方
日時.beginning_of_day
例
今日の初めの時刻を取得
DateTime.new(2011, 12, 24, 00, 00, 00).beginning_of_day
# Sat, 24 Dec 2011 00:00:00 +0000
beginning_of_hour
説明
時間の初めの時刻を取得
使い方
日時.beginning_of_hour
例
DateTime.new(2011, 12, 24, 00, 00, 00).beginning_of_hour
beginning_of_minute
説明
分の初めの時刻を取得
使い方
日時.beginning_of_minute
例
DateTime.new(2011, 12, 24, 00, 00, 00).beginning_of_minute
end_of_day
説明
終わりの時刻を取得
使い方
日時.end_of_day
例
今日の1秒後の時刻を取得
DateTime.new(2011, 12, 24, 00, 00, 00).end_of_day
# Sat, 24 Dec 2011 23:59:59 +0000
end_of_hour
説明
終わりの時刻を取得
使い方
日時.end_of_hour
例
DateTime.new(2011, 12, 24, 00, 00, 00).end_of_hour
end_of_minute
説明
終わりの時刻を取得
使い方
日時.end_of_minute
例
DateTime.new(2011, 12, 24, 00, 00, 00).end_of_minute
ago
説明
○秒前の時刻を取得
使い方
日時.ago(秒数)
例
今日の1秒前の時刻を取得
DateTime.new(2011, 12, 24, 00, 00, 00).ago(1)
# Sat, 23 Dec 2011 23:59:59 +0000
since
説明
○秒後の時刻を取得
使い方
日時.since(秒数)
例
今日の1秒後の時刻を取得
DateTime.new(2011, 12, 24, 00, 00, 00).since(1)
# Sat, 24 Dec 2011 00:00:01 +0000
seconds_since_midnight
説明
0時からの秒数を取得
使い方
日時.seconds_since_midnight
例
今日の0時からの秒数を取得
DateTime.new(2011, 12, 24, 10, 00, 00).seconds_since_midnight
# 36000
utc
説明
UTCの日時を取得
使い方
日時.seconds_since_midnight
例
UTCの日時を取得
DateTime.current.utc # Sat, 24 Dec 2011 00:00:00 +0900
# Fir, 23 Dec 2011 09:00:00 +1500
formatted_offset
説明
オフセットのフォーマット
使い方
日時.formatted_offset([コロンの有無])
例
datetime = DateTime.civil(2000, 1, 1, 0, 0, 0, Rational(-6, 24))
datetime.formatted_offset # "-06:00"
datetime.formatted_offset(false) # "-0600"
時間関連
説明
時間関係の便利関数
tomorrow
説明
翌日の時間を取得
使い方
時間.tomorrow
例
翌日の時間を取得
Time.mktime(2011, 12, 24, 00, 00, 00).tomorrow
# 2011-12-25 00:00:00 +0900
その他
標準関数で代替
Time.mktime(2011, 12, 24, 00, 00, 00) + 86400
# 2011-12-25 00:00:00 +0900
yesterday
説明
前日の時間を取得
使い方
時間.yesterday
例
翌日の時間を取得
Time.mktime(2011, 12, 24).yesterday
# 2011-12-23 00:00:00 +0900
その他
標準関数で代替
Time.mktime(2011, 12, 24) - 86400
# 2011-12-23 00:00:00 +0900
prev_year
説明
去年の時間を取得
使い方
時間.prev_year
例
去年の時間を取得
Time.mktime(2011, 12, 24, 00, 00, 00).prev_year
# 2010-12-24 00:00:00 +0900
その他
標準関数で代替
Time.mktime(2011, 12, 24, 00, 00, 00) - 31536000
# 2010-12-24 00:00:00 +0900
next_year
説明
来年の時間を取得
使い方
時間.next_year
例
来年の時間を取得
Time.mktime(2011, 12, 24, 00, 00, 00).next_year
# 2012-12-24 00:00:00 +0900
その他
標準関数で代替
Time.mktime(2011, 12, 24, 00, 00, 00) + 31536000
# 2012-12-24 00:00:00 +0900
prev_month
説明
先月の時間を取得
使い方
時間.prev_month
例
先月の時間を取得
Time.mktime(2011, 12, 24, 00, 00, 00).prev_month
# 2011-11-24 00:00:00 +0900
next_month
説明
来月の時間を取得
使い方
時間.next_month
例
来月の時間を取得
Time.mktime(2011, 12, 24, 00, 00, 00).next_month
# 2012-01-24 00:00:00 +0900
beginning_of_week
説明
今週の初めの時間を取得
使い方
時間.beginning_of_week
例
今週の終わりの時間を取得
Time.mktime(2011, 12, 24, 00, 00, 00).beginning_of_week
# 2011-12-19 00:00:00 +0900
end_of_week
説明
今週の終わりの時間を取得
使い方
時間.end_of_week
例
今週の終わりの時間を取得
Time.mktime(2011, 12, 24, 00, 00, 00).end_of_week
# 2011-12-25 23:59:59 +0900
next_week
説明
来週の時間を取得
使い方
時間.next_week
例
来週の初めの時間を取得
Time.mktime(2011, 12, 24, 00, 00, 00).next_week
# 2011-12-26 00:00:00 +0900
来週の土曜日の時間を取得
Time.mktime(2011, 12, 24, 00, 00, 00).next_week(:saturday)
# 2011-12-31 00:00:00 +0900
prev_week
説明
先週の時間を取得
使い方
時間.prev_week
例
先週の初めの時間を取得
Time.mktime(2011, 12, 24, 00, 00, 00).prev_week
# 2011-12-12 00:00:00 +0900
先週の土曜日の時間を取得
Time.mktime(2011, 12, 24, 00, 00, 00).prev_week
# Sat, 17 Dec 2011 00:00:00 +0000
beginning_of_month
説明
今月の初めの時間を取得
使い方
時間.beginning_of_month
例
今月の初めの時間を取得
Time.mktime(2011, 12, 24, 00, 00, 00).beginning_of_month
# 2011-12-01 00:00:00 +0900
end_of_month
説明
今月の終わりの時間を取得
使い方
時間.end_of_month
例
今月の終わりの時間を取得
Time.mktime(2011, 12, 24, 00, 00, 00).end_of_month
# 2011-12-31 23:59:59 +0900
beginning_of_quarter
説明
四半期の初めの時間を取得
使い方
時間.beginning_of_quarter
例
四半期の初めの時間を取得
Time.mktime(2011, 12, 24, 00, 00, 00).beginning_of_quarter
# 2011-10-01 00:00:00 +0900
end_of_quarter
説明
四半期の終わりの時間を取得
使い方
時間.end_of_quarter
例
四半期の終わりの時間を取得
Time.mktime(2011, 12, 24, 00, 00, 00).end_of_quarter
# 2011-12-31 23:59:59 +0900
beginning_of_year
説明
今年の初めの時間を取得
使い方
時間.beginning_of_year
例
今年の初めの時間を取得
Time.mktime(2011, 12, 24, 00, 00, 00).beginning_of_year
# 2011-01-01 00:00:00 +0900
end_of_year
説明
今年の終わりの時間を取得
使い方
時間.end_of_year
例
今年の終わりの時間を取得
Time.mktime(2011, 12, 24, 00, 00, 00).end_of_year
# 2011-12-31 23:59:59 +0900
years_ago
説明
○年前の時間を取得
使い方
時間.years_ago(年数)
例
10年前の時間を取得
Time.mktime(2011, 12, 24, 00, 00, 00).years_ago(10)
# 2001-12-24 00:00:00 +0900
years_since
説明
○年後の時間を取得
使い方
時間.years_since(年数)
例
10年後の時間を取得
Time.mktime(2011, 12, 24, 00, 00, 00).years_since(10)
# 2021-12-24 00:00:00 +0900
months_ago
説明
○月前の時間を取得
使い方
時間.months_ago(月数)
例
2月前の時間を取得
Time.mktime(2011, 12, 24, 00, 00, 00).months_ago(2)
# 2011-10-24 00:00:00 +0900
months_since
説明
○月後の時間を取得
使い方
時間.months_since(月数)
例
2月後の時間を取得
Time.mktime(2011, 12, 24, 00, 00, 00).months_since(2)
# 2012-02-24 00:00:00 +0900
weeks_ago
説明
○週前の時間を取得
使い方
時間.weeks_ago(週数)
例
2週前の時間を取得
Time.mktime(2011, 12, 24, 00, 00, 00).weeks_ago(2)
# Sat, 10 Dec 2011 00:00:00 +0000
advance
説明
特定の時間前の時間を取得
使い方
時間.advance(時間のハッシュ)
例
2ヶ月後の2日前の時間を取得
Time.mktime(2011, 12, 24, 00, 00, 00).advance(months: 2, days: -2)
# 2012-02-22 00:00:00 +0900
change
説明
特定の時間前の時間を取得
使い方
時間.change(オプション)
オプション
オプション | 説明 |
---|---|
:year | 年 |
:month | 月 |
:day | 日 |
:hour | 時間 |
:min | 分 |
:sec | 秒 |
:usec | |
:nsec | |
:offset |
例
2ヶ月後の2日前の時間を取得
Time.mktime(2011, 12, 24, 00, 00, 00).change(months: 2, days: -2)
# 2011-12-24 00:00:00 +0900
時間の計算
説明
時間を足したり、引いたりする
使い方
時間 (+ or -) 時間
例
2日後の時間を計算
Time.mktime(2011, 12, 24, 00, 00, 00) + 2.day
# 2011-12-26 00:00:00 +0900
1年前の時間を計算
Time.mktime(2011, 12, 24, 00, 00, 00) - 1.year
# 2011-12-24 00:00:00 +0900
beginning_of_day
説明
初めの日時を取得
使い方
時間.beginning_of_day
例
初めの時刻を取得
Time.mktime(2011, 12, 24, 00, 00, 00).beginning_of_day
beginning_of_hour
説明
初めの時刻を取得
使い方
時間.beginning_of_hour
例
初めの時刻を取得
Time.mktime(2011, 12, 24, 00, 00, 00).beginning_of_hour
beginning_of_minute
説明
初めの時刻を取得
使い方
時間.beginning_of_minute
例
初めの秒数を取得
Time.mktime(2011, 12, 24, 00, 00, 00).beginning_of_minute
end_of_day
説明
終わりの日を取得
使い方
時間.end_of_day
例
今日の1秒後の時刻を取得
Time.mktime(2011, 12, 24, 00, 00, 00).end_of_day
# 2011-12-24 23:59:59 +0900
end_of_hour
説明
終わりの時刻を取得
使い方
時間.end_of_hour
例
今日の1秒後の時刻を取得
Time.mktime(2011, 12, 24, 00, 00, 00).end_of_hour
end_of_minute
説明
終わりの秒数を取得
使い方
時間.end_of_minute
例
今日の1秒後の時刻を取得
Time.mktime(2011, 12, 24, 00, 00, 00).end_of_minute
ago
説明
今日の○秒前の時刻を取得
使い方
時間.ago(秒数)
例
今日の1秒前の時刻を取得
Time.mktime(2011, 12, 24, 00, 00, 00).ago(1)
# 2011-12-23 23:59:59 +0900
since
説明
今日の○秒後の時刻を取得
使い方
時間.since(秒数)
例
今日の1秒後の時刻を取得
Time.mktime(2011, 12, 24, 00, 00, 00).since(1)
# 2011-12-24 00:00:01 +0900
seconds_since_midnight
説明
今日の0時からの秒数を取得
使い方
時間.seconds_since_midnight
例
今日の0時からの秒数を取得
Time.mktime(2011, 12, 24, 10, 00, 00).seconds_since_midnight
# 36000.0
utc
説明
UTCの時間を取得
使い方
時間.seconds_since_midnight
例
UTCの時間を取得
Time.current.utc # 2011-12-24 00:00:00 +0900
# 2011-12-23 15:00:00 UTC
zone_default
説明
UTCの時間を取得
使い方
時間.zone_default
例
UTCの時間を取得
Time.zone_default
# (GMT+09:00) Tokyo
days_in_month
説明
月の日数を取得
使い方
Time.days_in_month(月 [, 年])
例
2020年2月の日数
Time.days_in_month(2, 2020)
# 29
今年の2月の日数
Time.days_in_month(2)
# 29
days_in_year
説明
年の日数を取得
使い方
Time.days_in_year(月 [, 年])
例
2020年の日数
Time.days_in_year(2, 2020)
# 365
今年の日数
Time.days_in_year(2)
# 365
find_zone
説明
指定したタイムゾーンを取得
使い方
Time.find_zone(タイムゾーン)
例
Time.find_zone "Tokyo"
rfc3339
説明
RFC3339文字列からTimeを生成
使い方
Time.rfc3339(文字列)
例
Time.rfc3339('1999-12-31T14:00:00-10:00')
# 2000-01-01 00:00:00 -1000
use_zone
説明
一時的にタイムゾーンを変更
使い方
Time.use_zone(文字列) {
処理内容
}
例
Time.use_zone "Tokyo" {
Time.local(2019, 01, 01, 00, 00, 00)
}
formatted_offset
説明
オフセットのフォーマット
使い方
Time.now.formatted_offset([コロンの有無])
例
Time.local(2000).formatted_offset
# "-06:00"
Time.local(2000).formatted_offset(false)
# "-0600"
middle_of_day
説明
日中(12:00)
使い方
Time.now.middle_of_day
例
Time.mktime(2011, 12, 24, 00, 00, 00).middle_of_day
next_day
説明
指定した日の次の日
使い方
Time.now.next_day
例
Time.mktime(2011, 12, 24, 00, 00, 00).next_day
next_month
説明
指定した日の次の月
使い方
Time.next_month
例
Time.mktime(2011, 12, 24, 00, 00, 00).next_month
next_year
説明
指定した日の次の年
使い方
Time.now.next_year
例
Time.mktime(2011, 12, 24, 00, 00, 00).next_year
prev_day
説明
指定した日の前の日
使い方
Time.prev_day
例
Time.mktime(2011, 12, 24, 00, 00, 00).prev_day
prev_month
説明
指定した日の前の月
使い方
Time.now.prev_month
例
Time.mktime(2011, 12, 24, 00, 00, 00).prev_month
prev_year
説明
指定した日の前の年
使い方
Time.prev_year
例
Time.mktime(2011, 12, 24, 00, 00, 00).prev_year
seconds_since_midnight
説明
00:00:00からの秒数
使い方
Time.now.seconds_since_midnight
例
Time.mktime(2011, 12, 24, 00, 00, 00).seconds_since_midnight
seconds_until_end_of_day
説明
23:59:59までの秒数
使い方
Time.now.seconds_until_end_of_day
例
Time.mktime(2011, 12, 24, 00, 00, 00).seconds_until_end_of_day
to_formatted_s
説明
指定したフォーマットに変換
使い方
Time.now.to_formatted_s(フォーマット)
例
Time.now.to_formatted_s(:time)
# "06:10"
Time.now.to_s(:time)
# "06:10"
Time.now.to_formatted_s(:db)
# "2007-01-18 06:10:17"
Time.now.to_formatted_s(:number)
# "20070118061017"
Time.now.to_formatted_s(:short)
# "18 Jan 06:10"
Time.now.to_formatted_s(:long)
# "January 18, 2007 06:10"
Time.now.to_formatted_s(:long_ordinal)
# "January 18th, 2007 06:10"
Time.now.to_formatted_s(:rfc822)
# "Thu, 18 Jan 2007 06:10:17 -0600"
Time.now.to_formatted_s(:iso8601)
# "2007-01-18T06:10:17-06:00"
単位を計算
説明
バイト、キロバイトなどの単位を計算
使い方
バイト
数字.bytes
キロバイト
数字.kilobytes
メガバイト
数字.megabytes
ギガバイト
数字.gigabytes
テラバイト
数字.terabytes
ペタバイト
数字.petabytes
エクサバイト
数字.exabytes
例
2.kilobytes
# 2048
引数の文字列で指定した名前で定数を探す
説明
指定した名前で定数を探す
使い方
constantize(文字列)
例
constantize('Module')
# Module
constantize('Test::Unit')
# Test::Unit
ソースコード
アンダーバーをハイフンに変換
説明
アンダーバー(_)をハイフン(-)に変換
使い方
dasherize(文字列)
or
文字列.dasherize()
例
dasherize('puni_puni')
# "puni-puni"
ソースコード
文字列から右端のセグメントを削除
説明
文字列から右端のセグメントを削除
使い方
deconstantize(文字列)
or
文字列.deconstantize()
例
::HTMPを削除
deconstantize('Net::HTTP')
# "Net"
::HTMPを削除
deconstantize('::Net::HTTP')
# "::Net"
セグメントが1つ場合
deconstantize('String')
# ""
空文字の場合
deconstantize('')
# ""
ソースコード
文字列からモジュールの一部を削除
説明
定数式からモジュール部分を削除
使い方
demodulize(文字列)
or
文字列.demodulize()
例
定数式からモジュール部分を削除
demodulize('ActiveRecord::CoreExtensions::String::Inflections')
# "Inflections"
モジュール部分が無い
demodulize('Inflections')
# "Inflections"
ソースコード
クラス名から外部キーの名前を作成
説明
クラス名から外部キーの名前を生成
separate_class_name_and_id_with_underscoreがfalseでアンダーバーなし
使い方
foreign_key(文字列, 名前とidの間にアンダーバーを入れるか=true])
or
文字列.foreign_key(名前とidの間にアンダーバーを入れるか=true])
例
クラス名から外部キーの名前を生成
foreign_key('Message')
# "message_id"
名前とidの間にアンダーバーを入れない
foreign_key('Message', false)
# "messageid"
親クラスがある場合
foreign_key('Admin::Post')
# "post_id"
ソースコード
外部キー制約を追加
説明
指定したテーブルに外部キー制約を追加
使い方
add_foreign_key(参照元テーブル名, 参照先テーブル名, オプション引数)
オプション
オプション | 説明 | 初期値 |
---|---|---|
:column | 外部キーカラム名 | to_table.singularize + “_id” |
:primary_key | 参照先テーブルの主キー | id |
:name | 制約 | fk_rails_<identifier> |
:on_delete | 削除時のアクション | |
:on_update | 更新時のアクション | |
:if_not_exists | 外部キーがすでに存在する場合は再追加しない | |
:validate | バリデート(PostgreSQLのみ) | true |
:deferrable | 外部キーが遅延可能かどうかを指定(PostgreSQLのみ) | false |
例
外部キー制約を追加
add_foreign_key :articles, :authors
# ALTER TABLE "articles" ADD CONSTRAINT fk_rails_e74ce85cbc FOREIGN KEY ("author_id") REFERENCES "authors" ("id")
主キーを指定
add_foreign_key :articles, :users, column: :author_id, primary_key: "lng_id"
# ALTER TABLE "articles" ADD CONSTRAINT fk_rails_58ca3d3a82 FOREIGN KEY ("author_id") REFERENCES "users" ("lng_id")
削除時のアクションを指定
add_foreign_key :articles, :authors, on_delete: :cascade
# ALTER TABLE "articles" ADD CONSTRAINT fk_rails_e74ce85cbc FOREIGN KEY ("author_id") REFERENCES "authors" ("id") ON DELETE CASCADE
ソースコード
最初の単語を大文字にしてアンダーバーをスペースへ変換し末尾の_idを削除
説明
最初の単語を大文字にしアンダーバーをスペースへ変換し末尾の_idを削除
使い方
humanize(単語, capitalize: 最初の単語が大文字か=true, keep_id_suffix: suffix=false)
オプション
オプション | 説明 | デフォルト値 |
---|---|---|
:capitalize | 最初の単語を大文字にするか | true |
:keep_id_suffix | 末尾の_idを残すか | false |
例
最初の単語を大文字にし、アンダーバーをスペースへ変換
humanize('employee_salary')
# "Employee salary"
最初の単語を大文字にし、末尾の_idを削除
humanize('author_id')
# "Author"
最初の単語を大文字しない
humanize('author_id', capitalize: false)
# "author"
_idのみ
humanize('_id')
# "Id"
末尾の_idを残す
humanize('author_id', keep_id_suffix: true)
# "Author Id"
ソースコード
数値を通貨のフォーマットに変換
説明
数値を通貨のフォーマットに変換
使い方
number_to_currency(数値, オプション={})
オプション
オプション | 説明 | デフォルト値 |
---|---|---|
:locale | 使用するロケール。YAML形式で「/config/locales/」以下の設定 | |
:precision | 小数以下の桁数 | 2 |
:unit | 通貨単位 | $ |
:separator | 小数点記号 | . |
:delimiter | 桁区切り文字 | , |
:format | 出力される文字のフォーマット | %u%n |
:negative_format | マイナスのときのフォーマット | -%u%n |
:raise | 引数が無効な場合に、InvalidNumberError | false |
:strip_insignificant_zeros | 少数以下は無視 | false |
例
ドルの通過フォーマットに変換
number_to_currency(123456789)
# $123,456,789.00
小数点5つまで表示
number_to_currency(123456789, precision: 5)
# $123,456,789.00000
小数点をスペースで区切る
number_to_currency(123456789, separator: " ")
# $123,456,789 00
桁区切りをスペース
number_to_currency(123456789, delimiter: " ")
# $123 456 789.00
通過単位を「¥」
number_to_currency(123456789, unit: "¥")
# ¥123,456,789.00
通過単位を後ろ
number_to_currency(123456789, format: "%u%n", unit: "¥")
# 123,456,789.00円
マイナスのフォーマット
number_to_currency(-123456789, negative_format: "%u-%n")
# $-123,456,789.00
円のロケールを設定
# config/locales/jp/yml
jp:
number:
currency:
format:
unit: "円"
format: "%n%u"
negative_format: "-%n%u"
precision: 0
number_to_currency(123456789, locale: 'jp')
# 123,456,789円
ソースコード
数値を単位のフォーマットに変換
説明
数値を単位のフォーマットに変換
使い方
number_to_human(数値, オプション={})
オプション
オプション | 説明 | デフォルト |
---|---|---|
:locale | 使用するロケール | |
:precision | 桁数 | 1 |
:signigicant | 全体桁数 | |
:separator | 小数点記号 | . |
:delimiter | 桁区切り文字 | , |
:strip_insignidicant_zeros | 小数点以下の0を削除 | |
:units | 単位名を表すハッシュ | |
:format | 出力形式 | |
:raise | エラーの場合に例外 |
例
単位で表示
number_to_human(123456789)
# 123 Million
5桁で表示
number_to_human(123456789, precision: 5)
# 123.00 Million
小数点をスペースで区切る
number_to_human(123456789, precision: 5, separator: " ")
# 123 00 Million
単位を日本語仕様
number_to_human(123456789, units: {hundred: "百", thousand: "千", million: "百万", billion: "十億", trillion: "兆", quadrillion: "千兆"})
# 123 百万
ソースコード
バイト単位の数値を変換
説明
バイト単位の数値を変換
使い方
number_to_human_size(数値, オプション={})
オプション
オプション | 説明 | デフォルト値 |
---|---|---|
:locale | 使用するロケール | locale |
:precision | 小数以下の桁数 | 3 |
:signigicant | 全体桁数 | true |
:separator | 小数点記号 | . |
:delimiter | 桁区切り文字 | |
:strip_insignidicant_zeros | 小数点以下の0を削除 | true |
:raise | エラーの場合に例外 |
例
バイト単位に変換
number_to_human_size 123456789
# 118 MB
小数以下の桁数を指定
number_to_human_size 524288000, precision: 5
# 500 MB
ソースコード
数値をパーセントに変換
説明
数値をパーセントに変換
使い方
number_to_percentage(数値, オプション={})
オプション
オプション | 説明 | デフォルト |
---|---|---|
:locale | 使用するロケール | current locale |
:precision | 小数以下の桁数 | 3 |
:signigicant | 全体桁数 | false |
:separator | 小数点記号 | . |
:delimiter | 桁区切り文字 | |
:strip_insignidicant_zeros | 小数点以下の0を削除 | false |
:format | 出力される文字のフォーマット | %u%n(%uは通貨の単位 %nは数字部分) |
:raise | エラーの場合に例外 |
例
number_to_percentage(100)
# 100.000%
ソースコード
桁区切り文字を追加
説明
桁区切り文字を追加
使い方
number_with_delimiter(数値, オプション={})
オプション
オプション | 説明 |
---|---|
:locale | 使用するロケール |
:delimiter | 桁区切り文字 |
:separator | 小数点記号 |
:delimiter_pattern | フォーマット |
:raise | 引数が無効な場合に、InvalidNumberError |
例
桁区切り文字追加
number_with_delimiter 123456789
# 123,456,789
区切り文字を変更
number_with_delimiter(12345678, delimiter: ".")
#=> 12.345.678
文字が含まれる場合
number_with_delimiter("112a")
#=> 112a
ソースコード
数値を特定の桁で丸める
説明
数値を丸める
使い方
number_with_precision(数値, オプション={})
オプション
オプション | 説明 | デフォルト値 |
---|---|---|
:locale | 使用するロケール | |
:precision | 小数以下の桁数 | 3 |
:signigicant | 全体桁数 | false |
:separator | 小数点記号 | . |
:delimiter | 桁区切り文字 | , |
:strip_insignidicant_zeros | 小数点以下の0を削除 | false |
:raise | 引数が無効な場合に、InvalidNumberError |
例
数値を特定の桁で丸める
number_with_precision(12345678)
# 12,345,678
数字
number_with_precision("123456")
# 123,456
小数点
number_with_precision(12345678.05)
# 12,345,678.05
区切り文字を変更
number_with_precision(12345678, delimiter: ".")
# 12.345.678
小数点の区切り文字を変更
number_with_precision(12345678.05, separator: " ")
# 12,345,678 05
ロケール変更
number_with_precision(12345678.05, locale: :fr)
# 12 345 678,05
文字が含まれる場合
number_with_precision("112a")
# 112a
正規表現
number_with_precision("123456.78", delimiter_pattern: /(\d+?)(?=(\d\d)+(\d)(?!\d))/)
# 1,23,456.78
ソースコード
USの電話番号フォーマット
説明
USの電話番号フォーマット
使い方
number_to_phone(数値, オプション={})
オプション
オプション | 説明 | デフォルト値 |
---|---|---|
:area_code | エリアコード | |
:delimiter | 桁区切り文字 | - |
:extension | 末尾に追加する拡張子 | |
:country_code | カントリーコード | |
:pattern | フォーマット | |
:raise | エラーの場合に例外 |
例
number_to_phone(123456789)
# 123456789.000
ソースコード
数字を区切り文字を使用してグループ化
説明
数字を区切り文字を使用してグループ化
使い方
number_to_delimited(数値, オプション={})
オプション
オプション | 説明 |
---|---|
:locale | 使用するロケール |
:delimiter | 桁区切り文字 |
:separator | 少数と整数の区切り文字を設定 |
:delimiter_pattern | 正規表現 |
例
数字を区切り文字を使用してグループ化
number_to_delimited(12345678)
# 12,345,678
数字を指定
number_to_delimited('123456')
# 123,456
少数あり
number_to_delimited(12345678.05)
# 12,345,678.05
区切り文字を変更
number_to_delimited(12345678, delimiter: '.')
# 12.345.678
小数点の区切り文字を変更
number_to_delimited(12345678.05, separator: ' ')
# 12,345,678 05
ロケール変更
number_to_delimited(12345678.05, locale: :fr)
# 12 345 678,05
文字が含まれる場合
number_to_delimited('112a')
# 112a
ソースコード
フォーマットの指定されたレベル
説明
数値を丸める
使い方
number_to_rounded(数値, オプション={})
オプション
オプション | 説明 | デフォルト値 |
---|---|---|
:locale | 使用するロケール。YAML形式で「/config/locales/」以下の設定 | |
:precision | 桁数 | 3 |
:significant | 少数も桁数に含める | false |
:separator | 小数点記号 | . |
:delimiter | 桁区切り文字 | , |
:strip_insignificant_zeros | 小数点以下の余分な0を削除 | false |
例
数値を丸める
number_to_rounded(111.2345)
# 111.235
小数点以下2桁で丸める
number_to_rounded(111.2345, precision: 2)
# 111.23
少数以下5桁
number_to_rounded(13, precision: 5)
# 13.00000
整数のみ
number_to_rounded(389.32314, precision: 0)
# 389
3桁で丸める
number_to_rounded(111.2345, significant: true)
# 111
1つめ桁で丸める
number_to_rounded(111.2345, precision: 1, significant: true)
# 100
ロケール指定
number_to_rounded(111.234, locale: :fr)
# 111,234
区切り文字を変更
number_to_rounded(1111.2345, precision: 2, separator: ',', delimiter: '.')
# 1.111,23
ソースコード
XML変換
説明
配列またはハッシュをXML形式に変換
使い方
配列.to_xml(オプション={})
ハッシュ.to_xml(オプション={})
オプション
オプション | 説明 |
---|---|
:root | ルート要素を指定 |
:children | 子要素を指定 |
:skip_types | |
:indent | インデントを指定 |
:builder | XMLビルダを指定 |
:skip_instruct | ヘッダのタグを非表示 |
例
配列をXML形式
[{ foo: 1, bar: 2}, { baz: 3}].to_xml
#=> <?xml version="1.0" encoding="UTF-8"?>
# <objects type="array">
# <object>
# <bar type="integer">2</bar>
# <foo type="integer">1</foo>
# </object>
# <object>
# <baz type="integer">3</baz>
# </object>
# </objects>
ハッシュをXML形式
{ foo: 1, bar: 2 }.to_xml
#=> <?xml version="1.0" encoding="UTF-8"?>
# <hash>
# <foo type="integer">1</foo>
# <bar type="integer">2</bar>
# </hash>
配列関係の便利関数
説明
配列関係の便利関数
deep_dup
説明
配列のディープコピー
使い方
配列.deep_dup
例
array = [1, [2, 3]]
dup = array.deep_dup
dup[1][2] = 4
array[1][2] # nil
dup[1][2] # 4
excluding
説明
指定された要素を除外した配列
使い方
配列.excluding(要素)
例
文字列の配列から特定の文字列を除外
["David", "Rafael", "Aaron", "Todd"].excluding("Aaron", "Todd")
# ["David", "Rafael"]
配列の配列から特定の配列を除外
[ [ 0, 1 ], [ 1, 0 ] ].excluding([ [ 1, 0 ] ])
# [ [ 0, 1 ] ]
excluding!
説明
指定された要素を除外した配列 excludingの破壊的メソッド版
使い方
配列.excluding!(要素)
例
文字列の配列から特定の文字列を除外
["David", "Rafael", "Aaron", "Todd"].excluding!("Aaron", "Todd")
# ["David", "Rafael"]
配列の配列から特定の配列を除外
[ [ 0, 1 ], [ 1, 0 ] ].excluding!([ [ 1, 0 ] ])
# [ [ 0, 1 ] ]
from
説明
配列の末尾から指定された位置までの配列
使い方
配列.from(位置)
例
全配列
%w( a b c d ).from(0)
# ["a", "b", "c", "d"]
最後の2個の配列
%w( a b c d ).from(2)
# ["c", "d"]
配列数より大きな数を指定
%w( a b c d ).from(10)
# []
空の配列
%w().from(0)
# []
in_groups
説明
指定した数の配列にグルーピング
使い方
配列.in_groups(数, 埋める文字列)
例
グルーピング
%w(1 2 3 4 5 6 7 8 9 10).in_groups(3) {|group| p group}
# ["1", "2", "3", "4"]
# ["5", "6", "7", nil]
# ["8", "9", "10", nil]
埋める文字列を指定
%w(1 2 3 4 5 6 7 8 9 10).in_groups(3, ' ') {|group| p group}
# ["1", "2", "3", "4"]
# ["5", "6", "7", " "]
# ["8", "9", "10", " "]
in_groups_of
説明
指定した長さの配列にグルーピング
使い方
配列.in_groups_of(数, 埋める文字列)
例
グルーピング
%w(1 2 3 4 5 6 7 8 9 10).in_groups_of(3) {|group| p group}
# ["1", "2", "3"]
# ["4", "5", "6"]
# ["7", "8", "9"]
# ["10", nil, nil]
埋める文字列を指定
%w(1 2 3 4 5).in_groups_of(2, ' ') {|group| p group}
# ["1", "2"]
# ["3", "4"]
# ["5", " "]
including
説明
配列に要素を追加
使い方
配列.including(要素)
例
配列に要素を追加
[ 1, 2, 3 ].including(4, 5)
# [ 1, 2, 3, 4, 5 ]
配列の配列を追加
[ [ 0, 1 ] ].including([ [ 1, 0 ] ])
# [ [ 0, 1 ], [ 1, 0 ] ]
inquiry
説明
配列をオブジェクトに変換
使い方
配列.inquiry
例
pets = [:cat, :dog].inquiry
pets.cat? # true
pets.ferret? # false
split
説明
配列を分割
使い方
配列.split(値)
例
配列を分割
[1, 2, 3, 4, 5].split(3)
# [[1, 2], [4, 5]]
配列の条件を指定して分割
(1..10).to_a.split { |i| i % 3 == 0 }
# [[1, 2], [4, 5], [7, 8], [10]]
to
説明
初めから位置までの配列
使い方
配列.to(位置)
例
配列の先頭を取得
%w( a b c d ).to(0)
# ["a"]
配列の先頭から3個取得
%w( a b c d ).to(2)
# ["a", "b", "c"]
配列より大きな数を指定
%w( a b c d ).to(10)
# ["a", "b", "c", "d"]
空の配列
%w().to(0)
# []
to_query
説明
キーからURLで使える文字列
使い方
配列.to_query(キー名)
例
['Rails', 'coding'].to_query('hobbies')
# "hobbies%5B%5D=Rails&hobbies%5B%5D=coding"
to_sentence
説明
英文として適した文字列
使い方
配列.to_sentence([オプション])
オプション
オプション | 説明 | デフォルト値 |
---|---|---|
:words_connector | 3つ以上の場合の最後以外の結合文字 | , |
:two_words_connector | 結合文字 | ” and” |
:last_word_connector | 3つ以上の場合は最後の結合文字 | “, and” |
:locale | ロケール |
例
空の配列
[].to_sentence
# ""
配列の要素が1
['one'].to_sentence
# "one"
配列の要素が2
['one', 'two'].to_sentence
# "one and two"
配列の要素が3
['one', 'two', 'three'].to_sentence
# "one, two, and three"
to_xml
説明
XML変換
使い方
配列.to_xml([オプション])
例
[{ foo: 1, bar: 2}, { baz: 3}].to_xml
sum
説明
合計値を計算
使い方
配列.sum
例
1から10までの合計値
[1,2,3,4,5,6,7,8,9,10].sum
sum(Ruby)
説明
条件を満たす値の合計値を計算
使い方
配列.sum{|n| 条件}
例
1から10まで偶数の合計値
[1,2,3,4,5,6,7,8,9,10].sum{|num| num %2 == 0}
複製可能かチェック
説明
複製可能か
使い方
duplicable?()
例
複製可能
"hoge".duplicable?
# true
空文字の場合
"".duplicable?
# true
複製不可能
method(:puts).unbind.duplicable?
# false
ソースコード
ハッシュ関係の便利関数
説明
ハッシュ関係の便利関数
from_trusted_xml
説明
XMLからハッシュを生成
使い方
Hash.from_trusted_xml(xml)
例
Hash.from_trusted_xml(xml)
# {"hash"=>{"foo"=>1, "bar"=>2}}
from_xml
説明
XMLからハッシュを生成
使い方
Hash.from_xml(xml)
例
Hash.from_xml(xml)
# {"hash"=>{"foo"=>1, "bar"=>2}}
assert_valid_keys
説明
指定したキーがあるかバリデーション
使い方
ハッシュ.assert_valid_keys(キー名, ...)
例
{ name: 'Rob', years: '28' }.assert_valid_keys(:name, :age)
# raises "ArgumentError: Unknown key: :years. Valid keys are: :name, :age"
{ name: 'Rob', age: '28' }.assert_valid_keys('name', 'age')
# raises "ArgumentError: Unknown key: :name. Valid keys are: 'name', 'age'"
{ name: 'Rob', age: '28' }.assert_valid_keys(:name, :age)
# passes, raises nothing
deep_dup
説明
ハッシュのディープコピー
使い方
ハッシュ.deep_dup
例
hash = { a: { b: 'b' } }
dup = hash.deep_dup
dup[:a][:c] = 'c'
hash[:a][:c] # nil
dup[:a][:c] # "c"
deep_merge
説明
ハッシュのディープコピー
使い方
ハッシュ.deep_merge(ハッシュ)
例
h1 = { a: true, b: { c: [1, 2, 3] } }
h2 = { a: false, b: { x: [3, 4, 5] } }
h1.deep_merge(h2)
# { a: false, b: { c: [1, 2, 3], x: [3, 4, 5] } }
deep_merge!
説明
ハッシュのディープコピー
破壊的メソッド
使い方
ハッシュ.deep_merge!(ハッシュ)
例
h1 = { a: true, b: { c: [1, 2, 3] } }
h2 = { a: false, b: { x: [3, 4, 5] } }
h1.deep_merge!(h2)
# { a: false, b: { c: [1, 2, 3], x: [3, 4, 5] } }
deep_stringify_keys
説明
全てのキーを文字列にしたハッシュに変換
使い方
ハッシュ.deep_stringify_keys
例
hash = { person: { name: 'Rob', age: '28' } }
hash.deep_stringify_keys
# {"person"=>{"name"=>"Rob", "age"=>"28"}}
deep_stringify_keys!
説明
全てのキーを文字列にしたハッシュに変換
破壊的メソッド
使い方
ハッシュ.deep_stringify_keys!
例
hash = { person: { name: 'Rob', age: '28' } }
hash.deep_stringify_keys!
# {"person"=>{"name"=>"Rob", "age"=>"28"}}
deep_symbolize_keys
説明
全てのキーをシンボルにしたハッシュに変換
使い方
ハッシュ.deep_symbolize_keys
例
hash = {person: {name: 'Rob', age: '28'}}
hash.deep_symbolize_keys
# {:person=>{:name=>"Rob", :age=>"28"}}
deep_symbolize_keys!
説明
全てのキーをシンボルにしたハッシュに変換
破壊的メソッド
使い方
ハッシュ.deep_symbolize_keys!
例
hash = {person: {name: 'Rob', age: '28'}}
hash.deep_symbolize_keys!
# {:person=>{:name=>"Rob", :age=>"28"}}
deep_transform_keys
説明
ブロック内で変換されたキーを含むハッシュに変換
使い方
ハッシュ.deep_transform_keys{|key| 処理 }
例
hash = { person: { name: 'Rob', age: '28' } }
hash.deep_transform_keys{ |key| key.to_s.upcase }
# {"PERSON"=>{"NAME"=>"Rob", "AGE"=>"28"}}
deep_transform_keys!
説明
ブロック内で変換されたキーを含むハッシュに変換
破壊的メソッド
使い方
ハッシュ.deep_transform_keys!{|key| 処理 }
例
hash = { person: { name: 'Rob', age: '28' } }
hash.deep_transform_keys!{ |key| key.to_s.upcase }
# {"PERSON"=>{"NAME"=>"Rob", "AGE"=>"28"}}
deep_transform_values
説明
ブロック内で変換された値を含むハッシュに変換
使い方
ハッシュ.deep_transform_values{|key| 処理 }
例
hash = { person: { name: 'Rob', age: '28' } }
hash.deep_transform_values{ |value| value.to_s.upcase }
# {person: {name: "ROB", age: "28"}}
deep_transform_values!
説明
ブロック内で変換された値を含むハッシュに変換
破壊的メソッド
使い方
ハッシュ.deep_transform_values!{|key| 処理 }
例
hash = { person: { name: 'Rob', age: '28' } }
hash.deep_transform_values!{ |value| value.to_s.upcase }
# {person: {name: "ROB", age: "28"}}
except
説明
指定されたキーを除外したハッシュに変換
使い方
ハッシュ.except(キー名, ...)
例
{ a: true, b: false, c: nil }.except(:c)
# { a: true, b: false }
{ a: true, b: false, c: nil }.except(:a, :b)
# { c: nil }
except!
説明
指定されたキーを除外したハッシュに変換
破壊的メソッド
使い方
ハッシュ.except!(キー名, ...)
例
{ a: true, b: false, c: nil }.except!(:c)
# { a: true, b: false }
{ a: true, b: false, c: nil }.except!(:a, :b)
# { c: nil }
reverse_merge
説明
逆順でマージ
使い方
ハッシュ.reverse_merge(ハッシュ)
例
options.reverse_merge(size: 25, velocity: 10)
reverse_merge!
説明
逆順でマージ
破壊的メソッド
使い方
ハッシュ.reverse_merge!(ハッシュ)
例
options.reverse_merge!(size: 25, velocity: 10)
slice!
説明
指定されたキーのみのハッシュに変換。戻り値として、削除されたハッシュを返す
破壊的メソッド
使い方
ハッシュ.slice!(キー名)
例
hash = { a: 1, b: 2, c: 3, d: 4 }
hash.slice!(:a, :b) # {:c=>3, :d=>4}
hash # {:a=>1, :b=>2}
stringify_keys
説明
全てのキーを文字列にしたハッシュに変換
使い方
ハッシュ.stringify_keys
例
hash = { name: 'Rob', age: '28' }
hash.stringify_keys
# {"name"=>"Rob", "age"=>"28"}
stringify_keys!
説明
全てのキーを文字列にしたハッシュに変換
破壊的メソッド
使い方
ハッシュ.stringify_keys!
例
hash = { name: 'Rob', age: '28' }
hash.stringify_keys!
# {"name"=>"Rob", "age"=>"28"}
symbolize_keys
説明
全てのキーをシンボルにしたハッシュに変換
使い方
ハッシュ.symbolize_keys
例
hash = {name: 'Rob', age: '28'}
hash.symbolize_keys
# {:name=>"Rob", :age=>"28"}
symbolize_keys!
説明
全てのキーをシンボルにしたハッシュに変換
破壊的メソッド
使い方
ハッシュ.symbolize_keys!
例
hash = {name: 'Rob', age: '28'}
hash.symbolize_keys!
# {:name=>"Rob", :age=>"28"}
to_query
説明
URLとして使える文字列に変換
使い方
ハッシュ.to_query([名前空間名]))
例
{name: 'David', nationality: 'Danish'}.to_query
#=> "name=David&nationality=Danish"
{name: 'David', nationality: 'Danish'}.to_query('user')
#=> "user%5Bname%5D=David&user%5Bnationality%5D=Danish"
to_xml
説明
XMLに変換
使い方
ハッシュ.to_xml([オプション]))
例
{ foo: 1, bar: 2 }.to_xml
#=> <?xml version="1.0" encoding="UTF-8"?>
# <hash>
# <foo type="integer">1</foo>
# <bar type="integer">2</bar>
# </hash>
HTMLタグをエスケープ
説明
HTMLタグをエスケープ
使い方
html_escape(文字列)
例
html_escape('is a > 0 & a < 10?')
# is a > 0 & a < 10?
ソースコード
既にエスケープされた文字列はそのままでHTMLタグをエスケープ
説明
既にエスケープされた文字列はそのままでHTMLタグをエスケープ
使い方
html_escape_once(文字列)
例
html_escape_once('<< Accept & Checkout')
# "<< Accept & Checkout"
ソースコード
数値関係の便利関数
説明
数値関係の便利関数
months
説明
月の形式に変換
使い方
数字.months
例
2.months
# 2 months
multiple_of?
説明
割り切れるか?
使い方
数字.multiple_of?(数字)
例
0.multiple_of?(0)
# true
6.multiple_of?(5)
# false
10.multiple_of?(2)
# true
ordinal
説明
順番のサフィックス
使い方
数字.ordinal
例
1.ordinal
# "st"
2.ordinal
# "nd"
1002.ordinal
# "nd"
1003.ordinal
# "rd"
-11.ordinal
# "th"
-1001.ordinal
# "st"
ordinalize
説明
数字を順序文字列に変換
使い方
数字.ordinalize
例
1.ordinalize
# "1st"
2.ordinalize
# "2nd"
1002.ordinalize
# "1002nd"
1003.ordinalize
# "1003rd"
-11.ordinalize
# "-11th"
-1001.ordinalize
# "-1001st"
years
説明
年の形式に変換
使い方
数字.years
例
2.years
# 2 years
JSONエスケープ
説明
JSONエスケープ
使い方
json_escape(文字列)
例
json_escape(json)
# "{\"name\":\"\\u003C/script\\u003E\\u003Cscript\\u003Ealert('PWNED!!!')\\u003C/script\\u003E\"}"
ソースコード
例外処理をまとめる
説明
例外処理をまとめる
使い方
rescue_from(例外.., with: メソッド=nil, ブロック引数)
例
例外処理をまとめる
rescue_from User::NotAuthorized, with: :deny_access
ブロック
rescue_from ActiveRecord::RecordNotFound do |exception|
render json: { error: '404 not found' }, status: 404
end
####
ソースコード
Digest::MD5を使ったUUID
説明
Digest::MD5を使ったUUID
使い方
Digest::UUID.uuid_v3(UUIDの名前空間, 名前)
例
Digest::UUID.uuid_v3("name_space", "sample")
# "3b0ead59-ca8d-350b-a392-e656db58b0fc"
ソースコード
UUID
説明
UUID
使い方
Digest::UUID.uuid_v4
例
Digest::UUID.uuid_v4
# "4ad2a6a9-0135-4158-94d3-a33e41bbe048"
ソースコード
Digest::SHA1を使ったUUID
説明
Digest::SHA1を使ったUUID
使い方
Digest::UUID.uuid_v5(UUIDの名前空間, 名前)
例
Digest::UUID.uuid_v5("name_space", "sample")
# "d7a9ae1a-b099-5318-8828-340cc10a1550"
ソースコード
ぼっち演算
説明
オブジェクトがnilの時やメソッドが定義されていない場合はnilを返す
メソッドが定義されている場合はそのメソットを呼び出す
使い方
オブジェクト.try(引数.., ブロック引数)
# 失敗したら例外発生
オブジェクト.try(引数.., ブロック引数)
例
メソッドが定義されていない場合やオブジェクトがnilの時にnilを返す
@person.try(:name)
# @person.name if @personと同じ
tryを重ねる
@person.try(:spouse).try(:name)
nilの場合
@person.try(:non_existing_method)x
# nil
失敗したら例外発生
@person.try!(:name)