Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

ゲストログイン機能について

ポートフォリオの作成にあたり、ゲストログイン機能は必須です。
忙しい担当者の方が、わざわざ会員登録をするよりも
ささっと多くの機能を見る場合が多いためです。

ゲスト登録機能は、下記の記事の方法で搭載できました。

https://qiita.com/take18k_tech/items/35f9b5883f5be4c6e104#%E3%81%9D%E3%81%AE2-%E3%82%B2%E3%82%B9%E3%83%88%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E6%A9%9F%E8%83%BD%E3%81%AE%E5%AE%9F%E8%A3%85%E6%96%B9%E6%B3%95

こちらの「その2: ゲストログイン機能の実装方法」で実装しました。

その際、下記の2点は少しつまづいたので
記載指定おきます。

[1]routes.rbの設定

config/routes.rb
  devise_scope :user do
    post 'users/guest_sign_in', to: 'users/sessions#new_guest'
  end

こちらは、最初勝手に「devise_for :users」を修正するのかと思いましたが
追記する形で大丈夫でした。

デバイスを利用している方ですと

config/routes.rb
  devise_for :users

  devise_scope :user do
    post 'users/guest_sign_in', to: 'users/sessions#new_guest'
  end

こんな感じですね。

[2]modelの設定

あとは記事の通りにやればうまく行くのですが、
自分は1つだけエラーになりました。

上記の設定ですと、ゲストユーザーのアカウントは
メールアドレスとパスワードの作成だけされています。

そのため、アカウントの作成に「nickname」などが
必須項目であった場合、エラーが起こります。

その際は、モデルでその情報を追記してあげましょう。

models/user.rb
  def self.guest
    find_or_create_by!(nickname: 'ゲスト', email: 'guest@example.com') do |user|
      user.password = SecureRandom.urlsafe_base64
    end
  end

これで問題なく作成できました!

ki-ku
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away