RedmineのPluginで追加したメニューの表示を制御する

RedmineのPluginを作っている際に、メニューの表示制御が良くわからかったのでメモ。

オプションの":if"で指定できるようなので、たとえば管理者のみに表示したい場合は、下記のように User.current.admin? で判定できる。

menu :top_menu, :view_customizes,
  { :controller => 'view_customizes', :action => 'index' },
  :caption => 'View Customize',
  :if => Proc.new { User.current.admin? }

ログイン済みの場合なら、User.current.logged? で判断できる。

Controller側もあわせて、before_filter :require_admin を指定しておけば、直接URLたたかれても大丈夫。