Profile
サイトにアクセスし、最初のお気に入りを追加し、最初のアイテムを評価するなどのユーザーに対して自動的に作成されるモデルを作成しProfile
ます。適切にランダムで一意の文字列を含むデータベースに保存する必要があります。この文字列はクライアント側で Cookie として保存でき、後でプロファイルを取得するために使用されます。Cookie を簡単に改ざんして他の匿名の人のプロファイルを取得できないように、ランダムで十分な長さにする必要がありますが、これを完全に回避することはできません (匿名のプロファイルに機密データを保存しないように注意してください!)。
ユーザーが登録すると、そのユーザーProfile
を新しいUser
レコードに関連付けて、Cookie と一意の文字列識別子を削除できます。User
レコードに基づいて、ログイン時にプロファイルを簡単に取得できるようになりました。
モデルには、Profile
保存したい情報を含めることができます。
登録ユーザーと匿名ユーザーを区別したい場合は、AnonymousProfile
モデルとProfile
モデル (それぞれ異なる属性を持つ) を作成し、誰かが登録したときに、匿名プロファイルからユーザー プロファイルにすべてのデータを単純にコピーできます。
更新:
アプリケーション全体で、ユーザーがログインしているときにのみこの情報を使用することを決定できます。before_filter
現在のユーザーを取得する を定義し、実際にログインしているユーザーがいる場合にのみ、プロファイル データを使用します。
class ApplicationController < ActionController::Base
before_filter :fetch_user_data
def fetch_user_data
@current_user = ... # Work your magic to get current user
end
private
def current_profile
@current_user and @current_user.profile # Use profile association
end
end
コントローラーアクションのどこか:
if current_profile
# Do stuff with current_profile
# Only available to registered users...
end
current_profile
気が変わって、匿名ユーザーに対して匿名プロファイルを有効にしたい場合は、後で の実装を変更できます。