匿名(「ニックネームを選んでください」)と許可されている(u/n & pw)という選択肢を持つチャットルームを(標準的なケースで)ビルドしたいのであれば、私はどのようにDeviseでビルドしますか?Deviseの匿名ユーザーですか?
私はDeviseが後者の場合にうまく働いています。それは匿名の部分です(&のセッションを作成します)。私は苦労しています。
匿名(「ニックネームを選んでください」)と許可されている(u/n & pw)という選択肢を持つチャットルームを(標準的なケースで)ビルドしたいのであれば、私はどのようにDeviseでビルドしますか?Deviseの匿名ユーザーですか?
私はDeviseが後者の場合にうまく働いています。それは匿名の部分です(&のセッションを作成します)。私は苦労しています。
セットアップ匿名ユーザーに使用余分before_filterは、例えば、
def anonymous_sign_in
return if user_signed_in?
u = User.new(:type => 'anonymous')
u.save(:validate => false)
sign_in :user, u
end
#user.rb
# Creates an anonymous user. An anonymous user is basically an auto-generated
# +User+ account that is created for the customer behind the scenes and its
# completely transparently to the customer.
def anonymous!(nickname)
temp_token = SecureRandom.base64(15).tr('+/=', 'xyz')
usr = ::User.new(email: "#{temp_token}@example.net", password: temp_token, password_confirmation: temp_token, nickname: nickname)
usr.save!(validate: false)
usr
end
このレコードは、適切な場合に削除することができます。
は、そのための工夫のWikiページには、実際に存在し、彼らだけではゲストユーザーにそれを呼び出す:
別のオプションゲストユーザにサインインするのではなく、サインインされていないユーザがいる場合にcurrent_userにゲストユーザを返すようにします。
ユーザがサインインしていない場合、current_user
はゲストユーザを返します。したがって、サインインせずにアクセスできるコントローラにはフィルタ前にauthenticate_user!
は必要ありません。
def current_user
super || guest_user
end
def guest_user
User.find(session[:guest_user_id].nil? ? session[:guest_user_id] = create_guest_user.id : session[:guest_user_id])
end
def create_guest_user
token = SecureRandom.base64(15)
user = User.new(:first_name => "anonymous", :last_name => 'user', :password => token, :email => "#{[email protected]}")
user.save(:validate => false)
user
end
これはdevis sign_inメソッドの後にどのように呼び出されるのですか? – Bryan