From: "NARUSE, Yui" Date: 2009-09-06T17:44:47+09:00 Subject: [ruby-list:46363] Re: メソッドの間接?実行 成瀬です。 まず、新しい話題を既存のメールに対して返信で始めるのはやめてください。 [ruby-list:46304] やその返信を参照した上で、 次からは新規にスレッドを始めるようにしてください。 dezawa@aliadne.net wrote: > ある処理が許されているか否かを返すメソッドを作っているのですが、 > ユーザとステータスの組み合わせで複雑になるため case や if で書くと > 書いている本人もそれでよいのか分かりにくくなり何とかしたいと思っています。 http://github.com/be9/acl9/tree/master を使うのではだめなのですか? > 「色々あり」、とか「複雑」 というところは user と status だけでは > 決まらないので、method を呼んでその結果を返すというしかけです。 > > def complrex; 複雑 ;end なるメソッドを呼ぶように定義するにはどうしたら良いでしょうか。 > > 実際には Rails2.3.2 で実装していますので、メソッドその物はシンボルで > 呼べる(はず?)なので Rails は関係なく Ruby の機能で、__send__ を使えば呼べます……が、 それなりに危険を伴うメソッドですので、 プログラミング言語 Ruby: まつもと ゆきひろ, David Flanagan, 卜部 昌平 (監訳), 長尾 高弘 の 6,7,8 章あたりを読んでからにすることを強くお勧めします。 > eletable = { # userroll_id statsu > 1 => [true, true, false ], > 2 => [:moromoro ,:comprex, true ] > } > > とやってみましたら "comprex" が帰ってきてしまいました。 帰ってきているのは "comprex" ではなく、:comprex ではありませんか。 あと、「複雑」は complex ですね。 -- NARUSE, Yui