古いバージョンのドキュメントです。最新のバージョンはRails6.0.2.1

Railsドキュメント(v5.2.4.1)

Rubyとは

layout: archive_page

説明

手軽なオブジェクト指向プログラミングを実現するための種々の機能を持つオブジェクト指向スクリプト言語

Rubyの特徴

  • シンプルな文法
  • 普通のオブジェクト指向機能(クラス、メソッドコールなど)
  • 特殊なオブジェクト指向機能(Mixin、特異メソッドなど)
  • 演算子オーバーロード
  • 例外処理機能
  • イテレータとクロージャ
  • ガーベージコレクタ
  • ダイナミックローディング(アーキテクチャによる)
  • 多くのUNIX上で動くだけでなく、DOSやWindows、Mac、BeOSなどの上でも動く
archive_page

変数

layout: archive_page

特徴

  • JavaScriptと異なり、varは不要
  • セミコロン(;)も不要
  • 予約語は、自動的にダブルクォートで囲まれる

name = "Railsドキュメント"
archive_page

数値と文字列

layout: archive_page

特徴

  • 数値や文字列はすべてオブジェクトとして扱われる
  • 変数の型は自動的に変換されるので意識する必要はない

数値

  • 足し算やかけ算の結果、Fixnumの値を超えた場合は、自動的にBignumに変換
  • 整数値と小数値を計算した場合は、自動的にFloatに変換
  • 数値を表すオブジェクトのクラスは3つ
クラス 説明
Fixnum 変数に整数を代入
Bignum 非常に大きな整数を代入
Float 小数点付きの数字を代入

文字列

  • 文字列をシングルクォート(‘)やダブルクォート(“)で囲むと、オブジェクトができる
  • 「+」で連結
  • ダブルクォート内の、「#{}」は、式として評価された値が展開
  • ダブルクォート内の特殊文字
エスケープシーケンス 説明
\a ベル
\b バックスペース
\e エスケープ
\f 改行ページ
\n 改行
\r 復帰
\t 水平タブ
\v 垂直タブ
" ダブルクォート(“)
' シングルクォート(‘)
\ ¥マーク

数値と文字列の変換

数字から文字列

.to_s #### 文字列から数字
.to_i
archive_page

配列について

layout: archive_page

配列とは

連番が付けられた変数の集合体

sampleメソッド

使い方

配列.sample(個数)

説明

配列からランダムにn個の要素を取り出す

[1, 2, 3, 4, 5, 6, 7].sample(2)
# [3, 1]

keep_ifメソッド

使い方

配列.keep_if {|arr| 条件式 }

説明

配列から、条件を満たさない要素を削除

["ipad", "iPhone", "ipod", "iTunes", "Android"].keep_if {|i| i =~ /^i/ }
# ["ipad", "iPhone", "ipod", "iTunes"]

repeated_combinationメソッド

使い方

配列.repeated_combination(個数) {|arr| block }

説明

配列から、任意の○個の重複の組み合わせを列挙

repeated_permutationメソッド

使い方

配列.repeated_permutation(個数) {|arr| block }

説明

配列から、任意の○個からなる重複順列を列挙

rotateメソッド

使い方

配列.rotate(個数)

説明

配列から、要素を回転させるようにして要素をずらした配列

archive_page

ハッシュについて

layout: archive_page

説明

キーを使って、複数のオブジェクトへの参照をまとめて管理するオブジェクト

archive_page

条件分岐

layout: archive_page

説明

条件によって実行する処置を分ける

比較演算子

演算子 説明
== 等しい
=== 等しい
!= 等しくない
> より大きい
>= 等しいか、より大きい
< より小さい
<= 等しいか、より小さい
<=> 小さいときはー1、等しいときは0、大きいときは1
=~ 世紀表現のパターンマッチ(一致)
!~ 世紀表現のパターンマッチ(一致しない)

論理演算子

演算子 説明
&& かつ
and かつ
| | または
or または
! ではない
not ではない

if

if 条件式1 (then)
elsif 条件式2 (then)
else
end

unless

unless 条件式1 (then)
else
end

三項演算子

条件1 ? 正しいとき : 正しくないとき

case

case
when 条件式1 (then)
when 条件式2 (then)
else
end

case 変数
when 式1 (then)
when 式2 (then)
else
end

while

whike 条件式 do
end
archive_page

ブロックとイテレータ

layout: archive_page

イテレータ

繰り返し処理に使うメソッド

数字.time do |i|
end

each

配列やハッシュの要素数だけ繰り返す

配列

配列.each do |i|
end

ハッシュ

ハッシュ.each do |key, value|
end
archive_page

オブジェクトについて

layout: archive_page

説明

データと手続きをまとめたもの

クラスとインスタンス

  • クラスはオブジェクトの設計図
  • インスタンスは、設計図に基づいて作成されたオブジェクト

オブジェクトの作成

クラス.new

メソッドの呼び出し制限

レベル 説明
public メソッドはどこからでも呼び出せる
protected 同じクラスやサブクラス内のメソッドの中だけ呼び出せる
private 同じクラスやサブクラス内のメソッドの中だけ呼び出せる
archive_page

シンボルについて

layout: archive_page

説明

プログラム中のどこでも同一のオブジェクトを名前で表せるようにしたもの

使い方

:シンボル名

シンボルと文字列の使い分け

Railsでのシンボルと文字列の個人的な使い分け

  • コントローラやアクションの指定は文字列
  • 上記以外で識別子的に使う場合はシンボル
  • それ以外は文字列
archive_page

正規表現

layout: archive_page

使い方

/○○/で囲んで記述

オプション

オプション 説明
i 大文字小文字の区別しない
o 一度だけ式展開
x #をコメントと見なす
m 複数行モード
archive_page

Rubyの便利なメソッド

layout: archive_page

配列

配列をランダムに取り出す

[:aaa, :bbb, :ccc].rand

配列を分割

[1, 2, 3, 4, 5].split(3)

配列をグループ化

%w(1 2 3 4 5).in_groups_of(4){ |g| p g }

特定のキーからハッシュを作る

User.find(:all).index_by(&:login)

ハッシュ

ハッシュの差を取得

{one: 1, two: 2, three: 3 }.diff(one: 0, two: 2, four: 4)

ハッシュから特定の値を取り除く

hash.except(:controller, :action)

ハッシュから特定の値だけど取り出す

hash.slice(:title, :body)

元のハッシュの内容を優先してマージ

hash.reverse_merge(template: "entries/list")
archive_page