-1

current_userのデータをattr_accessor:offsetを使用してUserモデルに保存しようとしています。current_userモデルに保存されているオフセットを使用して、別のモデルのレコードをフェッチしたいと思います。このオフセットを別のモデルから変更すると、保存されませんか?

offestのデータベース列はやり過ぎだと思います。このオフセットは0..n整数になります。

4

1 に答える 1

1

私があなたの質問を正しく理解したと仮定します:

データベース列は、データがリロードを超えてモデルに保持される唯一の方法です。current_user変数は、コントローラーとビューのセッションに格納することでこれを回避します。current_userを使用しようとしている場所に関係なく、問題はcurrent_userが1つのリクエストから次のリクエストに渡されるメソッドに起因していると感じています。current_userに加えた変更は次のリクエストに引き継がれません。

current_user idは、ログイン時にセッションハッシュに保存されます。コントローラアクションの一部としてcurrent_userを初めて呼び出すと、authenticated_systemモジュールはセッションハッシュのIDに基づいてユーザーを検索します。つまり、current_userに加えた変更は、コントローラーのアクションが終了する前に保存しない限り失われます。データベース列はそれを行う唯一の方法です。

ただし、現在のユーザーを完全に無視して、セッションハッシュにオフセットを追加することができますsession[:offset] = offset。同じようにコントローラー/ビューで参照してください。ユーザーがブラウジングセッションを終了しない限り、session[:offset]保持しようとしているオフセット値が返されます。

ただし、オフセットがログインセッション間で持続する必要があるユーザー設定になる場合、オフセットは実際にはデータベース列としてユーザーモデルに属します。

于 2009-11-14T17:34:23.760 に答える