0

私はそのモデルがセッションデータを認識すべきではないと知っていますが、モデルに定義されているmethod_missingの小さな状態情報にアクセスする必要があります。 method_missingでキャッチメソッドフォームヘルパーによって呼び出される、すなわち:ここモデル内のmethod_missingからセッションにアクセスする最善の方法

client_medias/new.haml: 
    f.text_field :new_display_name 

client_media.rb: 
    has_many :custom_properties, :as => :extensible 

「new_display_nameは」ポリモーフィックな関連によって定義されたカスタムプロパティキーです。私はmethod_missingの動的メソッド定義にマッピングしている別個のカスタムプロパティキーのコレクションを取得するために、コンテキスト(私の場合はコントローラでアクセス可能なcurrent_appメソッドによって提供される)を知る必要があります。

アイデア?私はThread.currentを見て、この時点でそれを使う傾向があります。

+0

を見て、この問題を議論し、このサイト上のスレッドの多くは、ほとんどもそれを考慮するためにあなたを叱るだろう、があります。モデルに何かを利用できるようにする方法を詳しく説明していますが、警告はありますが、言語は荒く、実際のツールとして感じられます。しかし、それはできます、それはちょうど悪い習慣です。検索 'session model rails' – RadBrad

+0

私はここで、そしてもっと広いインターウェブで私の研究をしました。私はそれが悪いアイデアだと思いますが、コントローラのapp_idをモデルのmethod_missingに直接渡す唯一の方法は、text_fieldヘルパーをmonkeypatchすることです。それは悪い考えである可能性があります。誰かがより良いアイデアを考え出すことができれば、私はそれを使用して幸せです。または、どちらがより悪い(monkeypatchingヘルパーかThread.currentを使用している)どちらであるかを教えてください。 – egres

答えて

0

同様の問題があります。ここでは、単一のアプリケーションで複数のマンダントを処理しています。我々のケースでは、コンテキストは、ユーザがサイトをロードするトップレベルドメインを通じて識別されるマンダントです。

私たちのアプローチは、Thread.currentを使用するI18n.localeで行われているように、I18n内のロジックを使用してアプリケーションのすべての部分でアクセスできる「シングルトン」を提供することです。

次に、アプリケーションのコントローラのシングルトンをbeforeフィルタとして設定し、アプリケーションの他のすべての部分で同じ応答内でシングルトンを使用できるようにします。出発点として

は、スヴェン・フックス実装https://github.com/svenfuchs/i18n/blob/master/lib/i18n.rb

+0

私はこれをwhitelabelという私たちのアプローチに基づいて作成しました:https://github.com/phoet/whitelabel – phoet