私は現在、訪問者がユーザー アカウントにログインしているか、アカウントを持たない訪問者であるかにかかわらず、各セッションを通じて訪問者がどこをクリックしたかを追跡する社内分析システムを構築しています。
現在、sessions_store.rb を介して行われた変更のおかげで、セッションをデータベースに保存していますが、session_id に加えて、UserAgent の詳細と訪問者の IP の両方をセッション テーブルに追加する方法を見つけようとしています。
いくつかの解決策を試しましたが、すべて失敗しました。現在の解決策が最も近いようですが、セッションの属性を更新した後も ActiveRecord::RecordNotSaved エラーが発生し続けます。
現在、アプリケーション コントローラーで before フィルターを使用しています。
before_filter :set_useragent_and_ip_in_session
def set_useragent_and_ip_in_session
if session
sess = request.session_options[:id]
@session = Session.where(session_id: sess).first
@session.update_attributes(:ip=>request.remote_ip, :user_agent=>request.user_agent)
@session.save!
else
end
end
私は自分のビューにデバッグステートメントを挿入し、こじ開けてコードをいじりました-@sessionは有効で、@session.user_agentを適切に表示します....しかし、DBに保存するとロールバックします。
save! を使用すると、以下に加えてログに Completed 422 Unprocessable Entity が表示されます (スペースを節約するために Gist に貼り付けられます): https://gist.github.com/anonymous/8019c2426334f395a5fd
ありがとう!どんな助けでも大歓迎です。