From: dezawa@... Date: 2009-09-06T12:46:59+09:00 Subject: [ruby-list:46360] メソッドの間接?実行 出沢です ある処理が許されているか否かを返すメソッドを作っているのですが、 ユーザとステータスの組み合わせで複雑になるため case や if で書くと 書いている本人もそれでよいのか分かりにくくなり何とかしたいと思っています。 で、次の様な事を考えています。 Deletable = { # userroll_id statsu 1 => [true, true, false ], 2 => [色々あり,複雑, true ] } def deletable? Deletable[userroll_id][status] end 「色々あり」、とか「複雑」 というところは user と status だけでは 決まらないので、method を呼んでその結果を返すというしかけです。 def complrex; 複雑 ;end なるメソッドを呼ぶように定義するにはどうしたら良いでしょうか。 実際には Rails2.3.2 で実装していますので、メソッドその物はシンボルで 呼べる(はず?)なので eletable = { # userroll_id statsu 1 => [true, true, false ], 2 => [:moromoro ,:comprex, true ] } とやってみましたら "comprex" が帰ってきてしまいました。 とりあえずは Deletable = { # userroll_id statsu 1 => [:true, :true, :false ], 2 => [色々あり,複雑, :true ] } として case Deletable[user][status] when :true : : の様に逃げていますが今ひとつ美しくない。。。 よろしくお願いします