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

このコマンドによって、最低限のモデルに関する骨格が作られます。このコマンドによっていかのものが生成されます。

  1. db/mitigrate/201509081200_create_sample_model.rb
  2. app/model/sample_model.rb
  3. 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にはデータベースの構造を復元するための情報が入っている。これは、他人のプロジェクトを引き継ぐ際にも必要で初期化に必要。

⚠️ **GitHub.com Fallback** ⚠️