Rails 個人メモ 雑記 - Hiroki11x/RailsPracticeLives GitHub Wiki
####[Rubyメモ]
・クラス直下のインスタンス変数はJavaでいうstaticな変数、クラス変数。
・各インスタンスからはアクセスできない。
・initializeメソッドがコンストラクタとして使われる。
・setterは
def name=(name)
@name = name
end
みたいに書く。これによって、name="Monchan"のように呼び出すことが可能
・getter,setter合わせて簡単に以下のようにも書ける
attr_accessor :name
・ブロック:メソッドにコードを渡すための仕組み、サブルーチンに近い??
・通常のメソッド呼び出しではメソッド側で用意されたコード鹿実行できないが、ブロック付きメソッドを呼び出す場合は、メソッド側で定義されたコードの中にメソッドを呼び出す側からの別のコード(ブロック)を挿入できる
robot.job {|name| puts "Hi, my name is #{name}"}
とある時、||で囲まれたnameがブロック変数。インスタンス変数の@nameの値がnameにセットされる。セットするのを示しているのが#{name}の所、Cの%dみたいなイメージ。
・->{...}はProcオブジェクトと呼ばれ名前のない関数のこと
###[Railsメモ]
・config/application.rbはアプリケーションの詳細設定をするためのファイル
・Railsのジェネレーターではコントローラーを生成する際、それ専用のHelperとassetファイルも作られる
・rootはクライアント(Webブラウザ)がルートURLパスにアクセスした際にどのアクションが」処理を受け持つかを指定するメソッド。例えば以下のようなもの
root 'top#index'
・シャープ記号#の左側のtopがコントローラー名、indexがアクション名。topというコントローラーに対応するクラスは通常TopControllerである。
・コントローラーの作成
rails g controller top
コントローラーを作成したらTopControllerクラスにindexアクションを以下のように定義する。
・indexアクションの定義
def index
render action: 'index'
end
Railsでいうアクションとはコントローラークラスのpublicなインスタンスメソッドを指す。renderはHTMLを生成するメソッドで、ERBライブラリを用いて生成している。
・ERBテンプレート
ERBライブラリで解釈可能なテンプレートのこと、結果としてHTMLが生成される場合はindex.html.erbなどと命名する。原則としてERBテンプレートはapp/viewディレクトリにコントローラーごとに分けて配置。ファイル名はアクション名と同じにする。
・<% と %> で囲まれた範囲はRubyコードとして解釈される。
・<%= と %> で囲まれた範囲はRubyコードとして解釈された後に、値が文字列に変換されてその場所に挿入される
・form、headerなどの部分テンプレートは_form.html.erbなどのように_から始まる。
・Helperメソッド:ERBテンプレート内で使用できるメソッド。HTMLの所に条件式描きまくりたい時は、書けないのでHelperメソッドに書いて、返り値をセットしたいものとしてリターンしてHTMLに埋め込めば良い。
・ApplicationControllerはすべてのコントローラーの親クラスであり、所有してるメソッドを子クラスのコントローラーに渡しているだけが仕事
・RSpecとはテストフレームワークのこと
・modelの生成
rails g model SampleModel
このコマンドによって、最低限のモデルに関する骨格が作られます。このコマンドによっていかのものが生成されます。
- db/mitigrate/201509081200_create_sample_model.rb
- app/model/sample_model.rb
- spec/models/sample_model.rb 1のファイルは、マイグレーションスクリプトと呼ばれ、データベースの構成を変更するRubyスクリプト。テーブルを追加したり、定義を変更したりする。
def change
create_table :sample_models do |s|
s.string :email , null: false
s.string :email_for_index , null: false
......
s.timestamps
end
add_index :sample_models , :email_for_index , unique: true
end
みたいに書いていく。null: false はnullじゃダメですの意味。add_indexはemail_for_indexに関する索引を追加作成しています。第一引数にテーブル名、第二引数にindexを作成する対象のカラム名を指定。検索ソートの高速化を見込む。
・データベースの作成
rake db:migrate
マイグレーションスクリプトを実行して、データベースの構造を変更する操作。実行中エラーが発生した場合は、
rake db:migrate:reset
とすることで、一度データベースを削除してから再構成してくれる。また、この時生成されるdb/schema.rbにはデータベースの構造を復元するための情報が入っている。これは、他人のプロジェクトを引き継ぐ際にも必要で初期化に必要。