Menu

Category

Archive

logo


Ruby on Rails チュートリアル 4 章 | Ruby

2013-11-15 22:21:00 +0900
  • このエントリーをはてなブックマークに追加

急遽、勉強しなくちゃいけなくなった Ruby on Rails の個人的なまとめ。今回は初めて触るRubyに関して。 http://railstutorial.jp/chapters/rails-flavored-ruby?version=4.0#top

ハッシュとシンボル

ハッシュにおいてシンボルを使用する際の2つの記法 後者は Ruby1.9 からサポート。どちらもよく使われているので、両方見分けがつけるように。

1 >> h1 = { :name => "Michael Hartl", :email => "michael@example.com" }
2 => {:name=>"Michael Hartl", :email=>"michael@example.com"}
3 >> h2 = { name: "Michael Hartl", email: "michael@example.com" }
4 => {:name=>"Michael Hartl", :email=>"michael@example.com"}
5 >> h1 == h2
6 => true

ハッシュのネストの例

1 >> params = {} # 'params' というハッシュを定義する ('parameters' の略)。
2 => {}>> params[:user] = { name: "Michael Hartl", email: "mhartl@example.com" }
3 => {:name=>"Michael Hartl", :email=>"mhartl@example.com"}
4 >> params=> {:user=>{:name=>"Michael Hartl",:email=>"mhartl@example.com"}}
5 >> params[:user][:email]
6 => "mhartl@example.com”

ハッシュのコンストラクタは、配列等のコンストラクタと違い、デフォルト値を渡す。キーが存在しない場合に使用される。

1 >> h = Hash.new=> {}
2 >> h[:foo] # 存在しないキー :fooの値にわざとアクセスしてみる
3 => nil
4 >> h = Hash.new(0) # キーが存在しない場合のデフォルト値をnilから0に変更する
5 => {}
6 >> h[:foo]
7 => 0

関数

関数の呼び出し方が少しとっつきにくいかった。丸括弧や波括弧を省略するケースがある。

1 #関数呼び出しの丸かっこは省略可能。
2 stylesheet_link_tag("application", media: "all", "data-turbolinks-track" => true)
3 stylesheet_link_tag "application", media: "all","data-turbolinks-track" => true
4 # 最後の引数がハッシュの場合、波括弧は省略可能。
5 stylesheet_link_tag "application", { media: "all", "data-turbolinks-track" => true }
6 stylesheet_link_tag "application", media: "all","data-turbolinks-track" => true

ハッシュの後者のキーが旧式のハッシュロケットになっているのは、シンボルの中ではハイフンを使うことができないため。

クラス

Rubyの基本クラスを拡張することができる。

1 >> class String
2 >> # 文字列が回文であればtrueを返す
3 >> def palindrome?
4 >> self == self.reverse
5 >> end
6 >> end
7 => nil
8 >> "deified".palindrome?
9 => true

アクセッサメソッド

1 class User
2   attr_accessor :name, :email
3   def initialize(attributes = {})
4     @name  = attributes[:name]
5     @email = attributes[:email]
6   end
7 end

最初の行の attr_accessor :name, :email は、 アトリビュートアクセサをそれぞれ作成。インスタンス変数のゲッターとセッターメソッド作成する。インスタンス変数は常に @ 記号で始まり、未定義の状態では値が nil になります。

その他

helpers/application_helper.rb にある、module ApplicationHelper とは、メソッドをまとめるもの。通常、モジュールを書き、それをその都度インクルードする必要があるが、この module ApplicationHelper の中に書くことにより、その必要性がなくなる。Rails が自動的にインクルードし、すべてのビューから参照することができる。