出沢です

まずお詫びです
  返信を作って In-Reply-To  References を消すってよくやっているのですが、
  今回消し忘れてしまいました。

成瀬さま
http://github.com/be9/acl9/tree/master  で行けそうです。
が、
これを使うと根本的な作り直しになりそうなのと、そのための読み込み理解に
時間がかかりそうなので(なにしろcomprexな人ですから :) )
次の機会の作成に向けたいとおもいます。

  # Rails って探し当てることができれば何でもありそう。。。

るびきちさま

こんなコードになります
この  def deletable?(roll) で case when をずるずる書かないでなんとか
ならないものか、というのが質問です。

class Document
         #   roll [status0, status1]
  Deletable={ 1 => [:true  ,:false ],
              2 => [:form1 ,:false ],
	      3 => [:form2 ,:false ]
            }
 def initialize(form,status)
   @form   = form
   @status = status
 end
 
 def deletable?(roll)
   case Deletable[roll][@status]
   when :true ;  true
   when :false;  false
   when :form1;  @form==1
   when :form2;  @form==2
   end
 end
end

doc=[]

[[1,0],[1,1],[2,0],[2,1]].each_with_index{|arg,idx|
   puts "form #{arg[0]} status #{arg[1]}"
   doc=Document.new(*arg)
   [1,2,3].each{|roll|
      print "  roll #{roll} ", doc.deletable?(roll),"\n"
   }
}


期待値は
form 1 status 0
  roll 1 true
  roll 2 true
  roll 3 false
form 1 status 1
  roll 1 false
  roll 2 false
  roll 3 false
form 2 status 0
  roll 1 true
  roll 2 false
  roll 3 true
form 2 status 1
  roll 1 false
  roll 2 false
  roll 3 false