【rails】最初のrails備忘録



###rails インストール時に
→ruby 1.8.7 ruby1.9.1のrdocファイルのインストールを求められて許可

###rails と　cakephp (他にはrubyとphpのことも)の比較記事
→http://techracho.bpsinc.jp/piichan1031/2013_05_13/8578




###rails の作りこみの基本
→route.rb で「動作の定義」→***controller.rb　で定義した動作を作りこみ(ここで機能の実装)→ /app/view で　定義した動作の表示ページの作成　****.html.erbで





###railsアプリケーション3のmigrate 部分は不十分


###migrate の一つ前の状態に戻すコマンド
→rake db:rollback

#rails でbootstrap を利用するためにやったことメモ
→


###Rubyにおけるtrueの考え方
→【ご鞭撻】特有と書かれてますが、他の言語でも見られる +=/-= とかと同じく、自己代入の演算子ですよ。何も設定しなくても、常に有効です。
例えば a ||= b は

a が値を持つ（nil/false 以外）ならば a のまま、 nil/false ならば b を代入
の意味です。

値を持つ（つまり true に扱われる値）のが nil/false 以外の 全て であるところが Ruby の特徴の一つです。 ||= が働いてないように感じるのは、その点を勘違いされているためではないでしょうか。




###rails tutorial のu9.15あたりで急に各ページに移動できない
→ここでは、currentメソッドが見当たらないという指摘を受けている
もしかしたら、fakerのgemを使おうとしたことが問題かも
追加での指摘は_header.html.erb のファイルにおいて、<% if signed_in? %>による条件分岐をかけたところを指摘された

→currentメソッド＆signed_in?メソッドで指摘される


###なんにもできなくなる　rails コマンド・・・　（rails s とか　rails console とか）
→railtie　？をいじったことが原因（もともとここがエラー出しているような警告文がその前から結構でてた）


###確認入力を促す　→confirmation メソッドが、不十分

###railsアプリケーション3の　p.307で
→ステータスコード(エラーなどが出た場合のurlの末尾)があるので困ったときや必要な時はチェック

http://e-words.jp/p/r-httpstatus.html



###セキュリティー対策
→レイアウトを自分で作成する場合は、csrf_meta_tagメソッドの呼び出しを忘れない




###railsアプリケーション3のp.242~244までで、個別にvalidate機能を実装するやり方があるので参照

#編集制限などを付け加えるならば、
→viewファイルだけでなく、modelクラスの.rbファイルに制限を記載しないとできない

###rails3.2のfind_byメソッドについて
→3.2ではfind_byだけでなく、find_by_*** 「＊＊＊」は値。を入れないと動かない。これが動くのは4.0以降





###scaffold で作られるdestroyメソッドについて
もともとは (ex.
@book = Book.find(params[:id])
@book.destroy
)のように、個別のデータをfind で呼び出してそこからdestroyで削除しているが、
(ex.
Book.destroy(params[:id])
)で一括で削除できる→この場合は、bookのデータからparamsで個別のデータを取ってそのまま削除している
→その前のコードの場合は「何を削除したのか後からわかるように」一度findメソッドで個別にデータを呼び出している
$####補足としてdestroyメソッドとdeleteメソッドの使い方もチェック、アソシエーションやコールバックなどに使うので

###passwordの文字数制限など、ある行動について制限をかけるためのプログラムを組む場所は
→/app/models/***.rb→ここ
ちなみに、***の部分は都度変わる(ここではuserだった)

###セキュリティー管理についてのメソッドは→アプリケーション3のp.212
→attr_protected1 メソッドで行う

###model クラスの機能(規制)のつけ方には、railsアプリケーションの→ p.206～

###renderの使いかたは、
→ex.viewのファイルやレイアウトを引用する場合に使う
ex. rails アプリケーション3の中でcontroller でdef機能でbookファイルを呼び出すものを作っても
単体では動かない。だからrenderでビューファイルを引用している

###同じクラス(controllerクラスとか)で2度レンダリング(結果を返すこと)→同じdef 内でindx2回呼び出すとか・・・、render2回呼び出すとか
やった場合、メソッドは終了せず次の文へ処理が進んでしまう
→同じdef内でredirect_to と　render　使ってもぶつかってしまう


###controller 内で:textなどの指定がなかったり　@*** = +++++のように変数に格納しただけでは、
テンプレートファイルが必要になるので、アクセスしてもエラーになる

###controller内のレスポンスメソッド
→render : テンプレートの呼び出しやテキスト、スクリプトの出力など、汎用的な結果出力の手段
→redirect_to : 指定されたアドレスに処理をリダイレクト
→send_file : 指定されたファイルを出力
→send_data : 指定されたバイナリデータを出力
→head : 応答ヘッダのみを出力

＝守っていないと2重レンダリングでエラーを発生させてしまう

アプリケーション共通の機能を実装する場合はapplication_cotntroller.rbで操作




###controllerとviewファイルの関連づけ

→controller で　defからの
render "******/====="でviewファイルをよびだせる。
この際、*****はフォルダ名で=====はファイル名になる

このdefはアドレス名に連動している
ex. →　def index だと　****/index　のアドレスが呼び出される

###アドレスを呼び出すと→controller の指定のアクションが実行される。
→そこからテンプレートがあればそのテンプレートに行く

→controllerのdef と関連したviewファイルがあれば、renderからのファイル呼び出しは不要
→かつ、controller のdefを作ったら、route.rb 内にrouting のコードを記載しないと動かない	

「app\views\booklist\hello.html.erb」ファイルが呼び出されます。ただし、呼び出すビューが「app\views\コントローラ名\アクション名.html.erb」で作成されたファイルの場合は render メソッドを省略できます。その為、単に次のように記述することができます。
//

###接続されるURLを有効にするためにはroute.rbですべて決まる

###routing を有効にするには
→/configの中の
routes.rbに　resouse:poductions　の
puroductionsに任意の語を入れればrake routesで表示されるページに行ける【要viewファイルでhtml.erbを作成する必要あり】

###routes.rb　に特定のrubyメソッドを付与するとroutingに反映される

###resourcesソッド
→scaffoldなどを作ったときとかに役立つ？というか必須
→データベースにデータを流し込む際にも必須

###routingでurlとコントローラー表記での区別をすることができるコーディングは以下の通り、
→ex.	resources :users, :controller => 'members'

###route.rbにget アクションを使ってルーティングし過ぎるとどこかでrake コマンドが使えなくなる
→理由
いらない部分でルーティング設定をしているとrakeコマンドが使えなくなる
routes.rb で 404エラー表示のために作ったビューファイルをあえてルーティング
これは、エラー時にコントローラーからrenderで飛ばせば大丈夫

###match メソッドによるrouting設定→ここは確認
railsアプリケーション3の　p.370