Railsによく出るRubyの読み方
app/controllers/memo_controller.rb
-
MemoController
class MemoController < ApplicationController def list @memo_pages, @memos = paginate :memos, :per_page => 10 end
-
関数を呼び出す際に使う()カッコや、ハッシュを表す||波カッコを省略可能
class MemoController < ApplicationController def list (@memo_pages, @memos) = paginate(:memos, |:per_page => 10|) end
-
クラス名は大文字ではじめる
MemoController
-
「 X < Y 」:Yクラスを継承して、Xクラスを定義
- ApplicationControllerクラスを継承して、MemoControllerクラスを定義
-
MemoControllerクラスのメンバー関数(メソッド)「list()」を定義
def 関数名() 処理内容 end
-
メソッドlistの中身
(@memo_pages, @memos) = paginate(:memos, |:per_page => 10|)
-
@memo_pages
- @で始まる変数をインスタンス変数と呼び、インスタンス固有の変数を表す
- インスタンス変数は、インスタンス(オブジェクト)が生きている限り有効
- Railsでは、コントラーの中からビューに渡す値を入れておくのにも、このインスタンス変数を使う
-
paginate()関数
- @memo_pages, @memosという2つの値を返している
- @memo_pages, @memosは、MemoControllerの中で使えるメンバー変数(プロパティ)
-
:(コロン)で始まる名前。:memos, :per_page
- シンボル
- シンボルは内部的に数字で表されるために、ハッシュの引数などで使うと効率が良い
- オブジェクトの名前やハッシュのキーの場合にシンボルを使う
- メッセージなどでは文字列を使う
-
:per_page => 10
- ハッシュテーブル(連想記憶配列)を定義
- 「:per_page」というキー(インデックス)に「10」という値をいれて、paginate()関数の2つ目の引数に渡している。
- 一つの関数で複数の戻り値を持つことができる
-
@memo_pages
- app/controllers/memo_controller.rbの中には、他に、indexやshowなど様々なメソッドが定義されている。
マイグレーションファイル 001_create_memos.rb
-
db/migrate/001_create_memos.rb
class CreateMemos < ActiveRecord::Migration def self.up create_table :memos do |t| t.column :title, :string t.column :body, :text t.column :created_at, :datetime t.column :update_at, :datetime end end def self.down drop_table :memos end end
- [1] ActiveRecord::Migrationを継承するCreateMemosクラス
- [2] self.upメンバー関数を定義。self. をつけた関数は、CreateMemos.up()のように呼び出す。
-
[3] create_table関数を、引数:memosを与えて呼び出す
create_table (:memos) do |t|
- create_table(引数)は、引数の名前でテーブルを生成
- :memosテーブルを生成し、do |t|後 [4]-[7]行目でテーブルを定義
- 「do-end」はブロック。ブロック付メッソッド呼び出し