0

私は自分のデータベースに実際の人の名前と電子メールアドレスをシードし、データベースにあるアドレスにサイトへのリンクを付けて電子メールを送信することにより、サイトに参加するように招待します。Deviseの「database_authenticable」をサイトで使用すると、電子メール列と暗号化されたパスワードの列が作成されます。ただし、データベースにはパスワードではなく電子メールのみをシードしているため、これによって問題が発生するかどうかはわかりません。

パスワードの列を空白のままにする必要がありますか?ダミーのパスワードを作成して、変更するように招待する必要がありますか?何かお勧めはありますか?

この質問に答えるときは、このサイトの私のユーザー名をメモし、私の​​ユーザー名(および同様の知性を持つ他の人)があなたの答えを理解するために必要な詳細レベルを提供してください。前もって感謝します。

4

1 に答える 1

0

このようなことを行う最も簡単な方法は(Devise自体をいじくり回す必要なしに)、サインアップフォームの非表示フィールドとしてパスワードを設定し、全員のデフォルト値を設定することです(例:password123)

実行する必要があります

rails g devise:views

デバイスビューをカスタマイズし、パスワードフィールドを非表示フィールドとして変更できるようにします。次に、ユーザーモデルで、パスワードを設定する対象を指定します。例:

before_validation: set_default_password

def set_default_password
    self.password = 'password123'
    self.password_confirmation = 'password123'
end

次に、デバイスの電子メールを変更して、ユーザーにパスワードを通知し、できるだけ早くパスワードを変更するようにアドバイスします。

注:これは確かに最善の解決策ではありませんが、Deviseコードをいじらずに実行するのがおそらく最も簡単です。

チェックアウトできるもう1つのオプションは、devise_invitablegem...です。

https://github.com/scambra/devise_invitable

これにより、ユーザーに招待メールを送信し、そこからユーザーがパスワードを設定できるようになります。これはあなたの正確なニーズに合わないかもしれませんが、私はそれが言及する価値があると思いました。

関連するSOの質問はここにあります...

考案:パスワードなしでユーザーを作成し、アカウントを使用するにはパスワードが必要ですか?

于 2013-01-18T21:02:18.660 に答える