1

Railscast #393に従って、ゲスト ユーザーをアプリケーションに実装しました。このアプローチで私が抱えている唯一の問題は、ユーザーがボタンをクリックしてユーザーを作成する必要があることです (サインアップしなくても)。私の目標は、これが自動的に行われるようにすることですが、ページが再読み込みまたは再度アクセスされるたびに発生することはありません。私はこれについてどうすればよいか途方に暮れています。

user_controller.rb

class UsersController < ApplicationController
  def new
    @user = User.new
  end

  def create
    @user = params[:user] ? User.new(params[:user]) : User.new_guest
    if @user.save
      current_user.move_to(@user) if current_user && current_user.guest?
      session[:user_id] = @user.id
      redirect_to root_url
    else
      render "new"
    end
  end
end

user.rb

class User < ActiveRecord::Base
    attr_accessible :name, :provider, :uid, :email

    has_many :posts, :dependent => :destroy
    has_many :comments, :dependent => :destroy

    def self.new_guest
        new { |u| u.guest = true }
    end
    def move_to(user)
      posts.update_all(user_id: user.id)
      comments.update_all(user_id: user.id)
    end
end

application.html.erb

<ul>
    <li><%= button_to "Try it for free!", users_path, method: :post %></li>
</ul>

この質問に答えるために必要な追加情報を提供できます。

4

1 に答える 1