私はインターネット上で動作するコードを見つけられなかったので、私はいくつかの研究を行い、自分自身を書きました。これはRails 3.2.xやその他のバージョンで動作します。
私はモデルからセッションにアクセスする不正なコードにつながる可能性があることを思い出させるではないでしょう、あなたのApplicationController
# Set a filter that is invoked on every request
before_filter :_set_current_session
protected
def _set_current_session
# Define an accessor. The session is always in the current controller
# instance in @_request.session. So we need a way to access this in
# our model
accessor = instance_variable_get(:@_request)
# This defines a method session in ActiveRecord::Base. If your model
# inherits from another Base Class (when using MongoMapper or similar),
# insert the class here.
ActiveRecord::Base.send(:define_method, "session", proc {accessor.session})
end
でこれを挿入します。 Other posts may tell you, that you are stupid。モデルからセッションにアクセスするには、Model.save
メソッドを実装するような、いくつかの有効な理由がありますが、それは現在のユーザーセッションに保存されます。
ありがとうNimsesh。 1. ActiveRecordオブザーバーで、レコードをフィールドごとに(セッションの値で)更新します。 2. current_user(restful_authentication)のフィールドを設定します。すべてのユーザーがログイン時に設定されている別の値を保持しますか? – Saim
はい。もう一度見てくださいhttp://www.zorched.net/2007/05/29/making-session-data-available-to-models-in-ruby-on-rails/ ...これは 'before_filter:set_user 'これは、スレッドへの新しい要求ごとにセッション値を保存します。これは、すべてのユーザーが異なる値を保持することを意味します。誰の要求も異なり、そのような方法でスレッドは異なる値で更新し続けます。 –