2016-06-17 11 views
0

基本的に私がやっているのは、パスワードではなくニックネームだけを要求するゲストログインを求めることです。私はこれが決してデータベースに保存されないと仮定していますか?Rails 5で永続的でないユーザを作成するには?

私はこれを達成するためにどのようなアプローチをとるべきかわかりません。

+0

あなたは**クッキーを使用することができます* *:http://api.rubyonrails.org/classes/ActionDispatch/Cookies.html – dp7

+0

@dkp元々、セッションが機能するかどうか疑問に思っていました。私はこれで何ができるのかを見ていきます。 –

+0

@dkp Railsがすべての有効なセッションCookieを保存しているので、一意性を検証できますか? –

答えて

0

明示的にsaveを呼び出すと、何かがデータベースに保存される唯一の理由があります。

あなたはこのようなものでゲストユーザをエミュレートすることができます。

class User < ActiveRecord::Base 
    attr_accessor :guest 
    validate :is_not_guest 

    def self.guest(*args) 
    new(*args).tap { |u| u.guest = true } 
    end 

    def guest? 
    [email protected] 
    end 

protected 
    def is_not_guest 
    return unless (guest?) 

    self.errors.add(:base, 'Cannot save guest user' 
    false 
    end 
end 

これは、ゲストを保存排除すべきである、とあなたはこのようにそれを使用することができます:

@user = User.guest(username: session[:username]) 
+0

私は自分の質問をうまく表現できないと思う。ごめんなさい。私が意味することは、「通常の」ユーザー認証が存在しないことでした。 –

+0

@JadenWangパスワードを必要とせずにユーザーモデルを定義するか、セッションデータに存在するものを包み込むためにこのGuestアプローチを採用してください。 – tadman

+0

私の目的のために 'cookies.signed'で十分です。 –

関連する問題