[#46340] ASR 1.8.7 同梱の exerb で生成したプログラムが enumerator を見つけられない — "(株)ネットフォレスト 植田裕之" <ueda@...>

植田と申します。

10 messages 2009/09/01
[#46344] Re: ASR 1.8.7 同梱の exerb で生成したプログラムが enumerator を見つけられない — arton <artonx@...> 2009/09/01

artonです。

[#46345] Re: ASR 1.8.7 同梱の exerb で生成したプログラムが enumerator を見つけられない — "NARUSE, Yui" <naruse@...> 2009/09/01

成瀬です。

[ruby-list:46360] メソッドの間接?実行

From: dezawa@...
Date: 2009-09-06 03:46:59 UTC
List: 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
    :
    :
の様に逃げていますが今ひとつ美しくない。。。

よろしくお願いします


In This Thread