maeshimaの日記

メモ書きです

はじめる!Cucumber第4章

気になったところメモ

i18n_scaffold

i18n_generator いれると下記のgenerateコマンドが使えるようになる。

script/generate i18n_scaffold

通常のscaffoldに加えて、attributesの翻訳結果をlocaleファイルに追加してくれるみたいだけど、実際やってみたらなぜかうまくいかなかった。

あとは新規作成や更新時のflashメッセージも I18n.t メソッドを使って多言語化してくれるみたい。

ActionController::Base#hide_action

引数として渡したメソッド名をアクションとして使えなくするメソッド。個人的にアクションとして使わないときはprivateにしておいていたけどこっちのほうがいいのかな?→ざっと調べた感じではprivateの方が筋がいい気がする。

ヽ( ・∀・)ノくまくまー(07-27長年日記)

インスタンス変数を効率的に使うには

サンプルコードには下記のように、ログインしていないときには @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 使える場面でスルーしていること結構ありそうだなー

前提、もし、ならば、かつ

内部的には全部同じで、わかりやすさのために分かれているらしい。