あったらいいなぁ, login_context_helper

こんなコードが増えている。

class XxxxController < ApplicationController
  before_filter :bind_user

  def index
  end

  def hoge
    if @user.login?
    else
    end
  end

  def fuga
    if @user.login?
    else
    end
  end

end

こんな風に書けたらすっきりしそう。

class XxxxController < ApplicationController
  before_filter :bind_user
  
  def index
  end

  login_user Proc.new {
    # actions that response to a login users
    def hoge
    end
    def fuga
    end
  }, Proc.new {
    # actions that response to a non-login users
    def hoge
    end
    def fuga
    end
  }
  
end

要するに、コンテキスト(この場合ユーザーがログイン認証済みかしているかどうか)によって、アクションの定義位置を変えたい、というだけ。

あるいはアクション命名規則で、action_login と action で分けておいて、map.connect で見かけのURLは同じ、でもいいかもしれないけれども。この場合は、インターフェースとして明確に切り出せるから、少なくともテストケースの網羅性確認にはいいかもしれない。

自分で実装する気はないけど(あればいいなぁぐらいなので)、ふと思ったので。