カテゴリー:
Rails
タグ:
 Rails 変換

このエントリーをはてなブックマークに追加
更新日時:
2013年05月31日(金)
作成日時:
2013年05月31日(金)

前の記事 / 次の記事

Bookモデル みたいのがあったらすぐに BooksControllerが欲しいし
BooksControllerがあったらすぐに Bookモデルが欲しい、そんな時。

それぞれBookモデルとBooksコントローラーがあったとして、

モデルからコントローラー名を求めるのは簡単。

%Q|#{Book.model_name.pluralize}Controller|
#=> BooksController

コントローラーからモデル名を求めるのはもっと簡単なんだけど気が付くまで迷う。
BooksController の controller_name は BooksController じゃなくて books。
これを利用する。

BooksController.controller_name.classify
#=> Book

更に。

規約通り命名してるとして、
モデル名からインスタンス変数が欲しい時。

Book.model_name.underscore
#=> book

コントローラー名からインスタンス変数が欲しい時。

instance_variable_get(%Q|@#{BooksCcontroller.controller_name.singularize}|)
#=> book

ちなみに classify と underscore は
Railsの規約におけるクラス名とファイル名の変換に相当する処理を行う。

"BooksController".underscore
#=> books_controller

"books_controller".classify
#=> BooksController