はじめる!Cucumber第4章
気になったところメモ
i18n_scaffold
i18n_generator いれると下記のgenerateコマンドが使えるようになる。
script/generate i18n_scaffold
通常のscaffoldに加えて、attributesの翻訳結果をlocaleファイルに追加してくれるみたいだけど、実際やってみたらなぜかうまくいかなかった。
あとは新規作成や更新時のflashメッセージも I18n.t メソッドを使って多言語化してくれるみたい。
ActionController::Base#hide_action
引数として渡したメソッド名をアクションとして使えなくするメソッド。個人的にアクションとして使わないときはprivateにしておいていたけどこっちのほうがいいのかな?→ざっと調べた感じではprivateの方が筋がいい気がする。
インスタンス変数を効率的に使うには
サンプルコードには下記のように、ログインしていないときには @current_user に :none を代入してうまいなーと思ったけど
def current_user return nil if @current_user == :none return @current_user if @current_user @current_user ||= (User.find_by_id(session[:user_id] || :none)) current_user end
下記のように defined? を使った方がベターだと感じた(下記のはAuthlogicを使う時に定義するコード)
def current_user return @current_user if defined?(@current_user) @current_user = current_user_session && current_user_session.user end
I18n.t メソッド
使い方忘れてるので復習
Ruby on Rails Guides: Rails Internationalization (I18n) API
with_options
view の I18n.t メソッドの scope の指定をDRYにするために with_option を使っていた。Rails2の routes.rb 位でしか使ってないメソッドだったので新鮮だった。with_options 使える場面でスルーしていること結構ありそうだなー
前提、もし、ならば、かつ
内部的には全部同じで、わかりやすさのために分かれているらしい。