0

私の質問は、現在のユーザーの役割に基づいて手書きのヘルパーをどのように実装するかです。

リクエスト時に動作を変更することは効率的でしょうか? たとえば、ヘルパーは何らかの方法でユーザーの役割を理解し、適切なサブモジュールを含めますか?

module ApplicationHelper
    module LoggedInHelper
        # Some functions
    end

    module GuestHelper
        # The Same functions
    end

    # If User is Guest then include GuestHelper
    # If User is LoggedIn then include LoggedInHelper

end

この方法は効率的ですか?レールウェイですか?このように動作する関数がたくさんありますが、それらのすべてをifステートメントでラップしたくありません

def menu_actions
    if current_user.nil?
        # User is guest
        { "Log in" => link_to "Login", "/login" }
    else
        # User is Logged In
        { "Log out" => link_to "Logout", "/logout" }
    end
end

あなたの時間と考えをありがとう。

4

1 に答える 1

0

これがうまくいくとはまったく思えません。開発モードでは、おそらく動作しますが、本番環境では、リクエストごとにコードが最初から読み込まれるわけではありません。つまり、最初のリクエストで適切なモジュールがロードされますが、その後の次のリクエストで 2 番目のモジュールがロードされ、競合が発生する可能性があります。

switch ステートメントまたは if ステートメントを回避する方法については、適切な答えはありませんが、モジュール インクルードの代わりにクラス継承システムを使用することをお勧めします。

于 2010-04-06T20:58:17.923 に答える