CURRENT_USERフォームレールの3人のオブザーバーを得ることについてStackOverflowの上のいくつかの類似した質問が、基本的な考え方は同じである:Railsの3人のオブザーバーとCURRENT_USER
1)モデルの
attr_accessor :current_user
経由CURRENT_USERの通過私たちは観察する必要があります。
しかし、私は10個のモデル(作成、更新、削除アクション)を観察する必要があるので、これは私にとっては受け入れられないもので、コントローラごとにこれを各アクションに渡したくありません。
2)現在のユーザーをスレッドに格納しています。完全に容認できない。
だからベストプラクティスは何ですか?そして、私はオブザーバーのcurrent_userだけでなく、IPアドレスも取得したいと考えていますか?
アイデア?
これは多かれ少なかれ悩まされているので、実際にはややこしいことになってしまい、最終的には非常に優雅に感じることはほとんどありません。 (複数の)理由の1つは、例えば、あなたのレールプログラムにデータをインポートする必要があると言うことです。これはあなたのモデルとそれぞれのオブザーバーにアクセスする必要がありますが、コマンドラインから作業する場合は現在のユーザーはいません。今では、アプリケーションをWebサーバーの背後でしか動作させないように制限しています。そのため、大量のデータをインポートするようなものは痛いほど速くなります。 あなたのコードを貼り付けると、あなたのコメントをお寄せいただきありがとうございます。 – spotman
@spotman基本的には、あまり一般的ではないので、私のコードはあまり役に立たないでしょう。他のユーザーが管理できるuser_idを持つ 'Item'(例として)のような10個のモデル。この方法でID 1のユーザーは、Itme.first.user_id(#=> 2)を編集できます。そして、私はオブザーバーが(User1によって更新されたItem1がUser2によって作成された)ようなものを観察する必要があります。そして、はい、Webサーバーによる制限は完全に私にとっては大丈夫です。 –
このデータで何をしたいですか?あなたが更新を行った人に電子メールを送るようなことをしようとしているなら、コントローラに入れておくと、特に、attr_accessorを使ってupdater_idのようなものを設定したくない場合には、オブザーバーで読む。 – spotman