2016-04-04 9 views
2

私のRails 5アプリケーションでは、app/servicesの中にカスタムクラスがあり、現在のサブドメインにアクセスする必要があります。カスタムクラスから '要求'オブジェクト(または同様のもの)にどのようにアクセスしますか?

今、個々のメソッドは次のようになります。

... 
def self.is_valid? req 
    blacklist.exclude? req.subdomain 
end 

しかし、これは私がrequestにするたびに渡す必要がありますを意味します。これは最適ではないので、クラス内のどのようにレールrequestオブジェクトにアクセスするのかと思います。

+0

コントローラ内の 'request'はリクエストオブジェクトを返すメソッドであり、変数ではありません。 –

答えて

2

通常、要求オブジェクトはコントローラとビューからのみアクセスできます。他のオブジェクト(依存関係注入)と同じように必要なメソッドにリクエストを渡すことはできますが、サービスオブジェクトは本当にリクエストオブジェクト全体を必要としますか?サブドメイン文字列を渡すだけではどうですか?私の意見では、サービスオブジェクトは、コントローラオブジェクトから処理されたほうがよいかもしれないので、リクエストオブジェクトについて知る必要はありません。

1

はい、コントローラ固有の方法であり、他の場所に引数として渡す必要があります。これは、Railsの構築方法です。グローバル変数はすべてのクライアント間で共有され、コントローラはクライアントごとにインスタンス化されます。したがって、グローバルな「要求」オブジェクトはなく、現在接続されているすべてのユーザーをリストする組み込みの方法はありません。