• ベストアンサー

before_filter を普通のクラスで使う。

Rails の before_filter を普通のクラスで使いたいのですがどうすれば よいでしょうか? require でなにか読み込めばいい気もするのですが、 なにを読み込めば良いのかわかりません。

  • Ruby
  • 回答数1
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

RailsのActiveSupportを使った例とかWeb検索で見つかるので、そこらへん参考にしてみては。 http://www.google.co.jp/search?hl=ja&q=ruby+ActiveSupport%3A%3ACallbacks+before_filter&lr=lang_ja 汎用的に使いたいというなら、Aspect指向プログラミングになるので、そちら方面を探してみるとか。 http://www.google.co.jp/search?hl=ja&q=ruby++AOP+Aspect+Oriented&lr=lang_ja

関連するQ&A

  • PHPでrailsのbefore_filterを再現したいのですが

    初めまして。当方PHP初心者です。 標題の通り、PHPでrailsのbefore_filterのような機能を再現できないでしょうか。 要するにクラス内にAメソッド、Bメソッド、Cメソッド、Dメソッドが存在していて、 Bメソッド、Cメソッド、Dメソッドを実行する前に必ずAメソッドを実行させたいのです。 実現できる関数を探してみたのですが、どうにも見つかりませんでした。 皆様のお知恵を拝借したいです。 どうぞ、よろしくお願いします。

    • 締切済み
    • PHP
  • phpのクラスについて

    phpで会員制サイトの制作を勉強しています。 データベースへはPDOで接続しています。 MySQLデータベースを使用しています。 現在、クラスを作成してみようとオブジェクト指向について学習しています。 試しに、既に作ってあった、POSTされた文字列をhtmlspecialcharsやfilter_inputするようなセキュリティやNoticeエラー対策に使うプログラム関数を class Checkのメソッドとしてまとめようとしています。 関数にしていたときは正常に動いたのですが、 クラスのメソッドにするとFatal error: Cannot use object of type Check as array in ~というエラーが出てしまいます。 恐らく、引数の受け渡し($_POSTの値の受け渡し)の時点でうまくいっていないのか、 私的には、メソッド結果の受け取りがあまり理解できていないので、 メソッド結果の値を配列で返すのがうまくいっていないのだと思います。 <関数> function postFilter($before) { foreach($before as $key=>$value) { $after[$key] = filter_input(INPUT_POST, $key); } return @$after; } *呼び出し* $post = postFilter($_POST); $email = $post["email "]; <クラス> class Check { public function エスケープ処理 { エスケープ処理のメソッド } //POSTで受け取ったものをfilter_inputでフィルタリング public function filterPost($before){ foreach($before as $key=>$value) { $after[$key] = filter_input(INPUT_POST, $key); } return $after; }    ・    ・    ・ } *呼び出し* $post = new Check(); $post -> filterPost($_POST); $email = $post ["email "]; そもそもクラス化する必要がない気がして、関数のままにしておこうかと思ったのですが、 オブジェクト指向はどのプログラムを学ぶにあたっても、重要だと思い、 わからないまま放置したくないので質問しました。 添削いただけませんでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • なぜbefore?

    『2時までに終わらせなさい』を Finish it before two o'clock.とリスニング用の本に書いてありました。 普通は、beforeでなくてbyが使われると思うのですが? どうしてbeforeが使われてるのでしょうか? 教えて下さい。よろしくお願いします。

  • before in publicに関して

    高校生用の問題集にあっる英作文の問題です。 「彼は、人前で話した経験がないので、ドキドキしていた」の正答として、次のように掲載されていました。 ・He was nervou on account of never having spoken before in public 質問)「 in public 」だけで「大衆の面前で」という意味があると思うので、「before in public」の before は不要のような気がするのですが、いかがでしょうか?

  • 選抜クラスの下位と普通クラスの上位と・・・

    娘のクラス編成のことで質問させてください。 進学校に通っていますが、2年に進級するにあたって、選抜クラス入りを希望するかどうかの同意書を提出しなければなりません。 娘は「今の成績では選抜クラスに入れるかギリギリだから、もし入ったとしても下位になるので、普通クラスの上位にいたい。選抜クラス下位は授業に置いていかれついて行けなくなるかもしれないが、普通クラスの上位にいれば自分が引っ張って行く立場なので、先生たちの見る目が違ってくるし、2年時に頑張って3年生で選抜クラスに入れるように頑張りたい。」と言っています。 娘の言うところもわからなくはないのですが、もし入れるのであれば、下位でも選抜クラスのほうが成績が伸びるのではないかと、判断に迷っています ぜひ、ご意見をお聞かせ頂けないでしょうか。よろしくお願いいたします。

  • ffdshowおよびAC3Filterについて

    ffdshowオーディオコーデック(rev 2033)と、AC3Filter(ver 1.61b)が入っています。 両方もともと入っていたのですが、先日バージョンアップしました。 ffdshowオーディオコーデックでは、AACのみデコーダー有効(libfaad2)で、 他の形式はデコーダー無効にしています。 AC3Filterはインストール後、何も設定を変更していません。 1.バージョンアップ後、WMPでmp3を聴く時にタスクバーにAC3Filterのアイコンが表示されるようになりました。  以前は出てきていなかったのですが、何故出てくるようになったのでしょうか? 2.下記のようなエンコードの動画を再生すると、ffdshowオーディオコーデックとAC3Filterの両方のアイコンがタスクバーに表示されます。  ffdshowでAACのデコーダーを無効にすると、音が出なくなります。  (AC3Filterのアイコンは表示されます)  なんだか両方動いていると負荷が高くなっているような気がして嫌なのですが、実際に両方とも動いている(デコードしている)のでしょうか?  -------------------------------------------------------  [XXXXXXXXXXXXXXXX.mp4]  1280x720 24Bit AVC/H.264 High@3.2 59.92fps 9120f 15268.57kb/s  AAC 48.00kHz 2.0ch(2/0 L+R) HE 312.34kb/s  MP4 Base Media v1  ------------------------------------------------------- よろしくお願いいたします。

  • クラスの使い方

    php5です。 --- test1.class.php --- class TEST1 { function hoge1() { // 実際に複雑な処理ですが概要として簡易化してます $aaa = 'hoge1'; // クラスの実行で単純に戻り値を返す return $aaa; } } --- test2.class.php --- class TEST2 { function hoge2() { // 実際に複雑な処理ですが概要として簡易化してます $bbb = 'hoge2'; // クラスの実行で単純に戻り値を返す return $bbb; } } --- MySmarty.class.php --- require_once 'test1.class.php'; require_once 'test2.class.php'; class MySmarty extends Smarty { function MySmarty() { //ここでclassTEST1,2の戻り値を利用しif文で分岐をしたい if ($aaa == 'hoge1') { $ccc = 'あああ'; } elee { $ccc = 'いいい'; } if ($bbb == 'hoge2') { $ddd = 'ううう'; } elee { $ddd = 'えええ'; } $this->assign('aaa', $aaa); $this->assign('bbb', $bbb); ・・・ } } このような使い方はできないものでしょうか?クラスに触れてまだ間も無く理解も深めれて いない状態で参考サイトなどを調べてみたのですがこのような使い方を書いている説明は みつかりませんでした。 思いつく方法としてはMySmartyに継承すればいいようなのですが継承は1つまでと 制限があるようでそれもできない状態です。 単純に1つのクラスにまとめて書けば済むような気もあるのですが他にも別のクラスの 戻り値を利用して分岐等をさせたく思っているのですがこの場合どうすればいいのでしょうか? もし不可能な場合(可能だけど方法的に良くない場合)の別の方法としてアドバイスを 頂けますと幸いです!宜しくお願いします!

    • 締切済み
    • PHP
  • PHP クラスの中にクラス

    PHPでクラスの中にクラスを指定するのは不可能なことなのでしょうか? <例> name.php <? require("list.ini"); $list = new Select; $list->doSelect($a); <中略> ?> list.ini <? class Select{ function doSelect($qu){ require("col.ini"); $col = new Col; $col->doCol($ab,$ac); <中略> } ?> col.ini <? class Col{ function doCol($a,$b){ <中略> } ?> とすると Fatal error: Cannot redeclare class エラーがでます。 不可能なのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • YAMAHA ルータの filter について

    YAMAHA RTX1200 を使用して config の書き方を勉強しているのですが、filter の記述について疑問があります。基本的な事だとは思いますが、どなたか教えて下さい。 フレッツ光でシンプルにインターネットに接続するとします。 その場合、たとえば YAMAHA のサイトには下記のようなサンプルがあります。 ■高速回線(光ファイバー)を利用する:コマンド設定 https://network.yamaha.com/setting/router_firewall/internet/internet_connect/opticalfiber_command また、複数回線をバックアップに持つような、少し複雑な構成例があります。 ■バックアップ回線による通信断からの自動復旧のための設定例 (Bフレッツ、ADSLの例) http://www.rtpro.yamaha.co.jp/RT/docs/example/backup/vpn_backup_example8.html 上記のような設定例を見たとき、シンプルに接続するサンプルは filter の設定までしっかり書いてあるのですが、複雑な設定例の場合は filter の記述が書いていない例が多いようでした。 そこで質問ですが、 ●質問1  上記バックアップ回線の例のようにフィルタをまったくかけずにインターネット接続をしている場合、やはり不正アクセスのリスクは大きいのでしょうか。それとも特に filter を記述しなくても、必要最小限の侵入は RTX1200 が防いでくれるのでしょうか。 ●質問2  LAN1 は内部、LAN2 は 外部 WAN側として ONU と接続する場合、フィルタはWAN側(LAN2)にだけかけておけば良いのでは、という話を聞いたことがあるのですが、この考えはアリなのでしょうか。 ●質問3  上記設定例のように、少し複雑な例にはあまり filter が記述されていないのですが、これはかけなくても良いのではなく、例には無くても実際には filter はかけて下さい、という意味で取った方が良いでしょうか。 ●質問4  複雑に設定する場合でも、インターネットアクセスとVPNで拠点間接続をするくらいです。内部のクライアントからインターネットへの規制は特にありません。その場合、filter はどの程度かけておくべきなのでしょうか。 (そんなの考え方によるのだとは思いますが、一般的に皆さんどのように、どの程度設定しているのかが気になるため、質問しました。) 参考例などありましたら教えて下さい。 ご回答よろしくお願い致します。

  • everとbeforeの使い分けについて

    はじめまして。 英語の文法の勉強をしていて、疑問に思うことがあったので質問をさせていただきました。 現在完了(経験)におけるeverとbeforeの違いはなんでしょうか? everは肯定文では使えない・『かつて一度でも』といったニュアンスである?、beforeは肯定文・疑問文・否定文でも使えるといったことは調べて分かったのですが、使い分けがわかりません。 今勉強しているテキスト(Engilish Grammer in Use)の現在完了のところでは『例文を参考にして文章を作りなさい』という問題があり、その例文がbeforeを使っていたので、beforeを使った文を作りましたが、everでもいいのでは?とふと疑問に思いました。 beforeを使った問題は、『あなたはテニスをしたことがありますか?』という文を作る問題で、 "Have you played tennis before?" が答えです。また、その文に対する返答は "No, this is the first time I've played tennis." です。でも返答を見ても、別にeverでもいいのでは?と思ってしまいました。 ("Have you ever played tennis?"でも大丈夫そうな気がします) しかし文法の解説ページには特に何も書いていないし、使い分けにも触れていなかったので、どちらでもいいということなのでしょうか。 ということは、例えば『あなたはロンドンに行ったことがありますか?』と言いたい時は、 "Have you ever been to London?" "Have you been to London before?" のどちらでも大丈夫なのでしょうか。 (問題の答えではbeforeになっていたのですが、解説ページでは国名が違うだけのほぼ同じ文はeverを使っていました・・・) 細かいところを気にしすぎなだけかもしれませんが、もしお分かりになる方がいましたらどうぞ教えてください。よろしくお願いします。

専門家に質問してみよう