Пользователь вышел из Heroku после редактирования профиля - используя вход из Hartl railstutorial

Моя проблема похожа на rails, пользователь выходит из системы после редактирования профиля? Но я я не использую devise для входа/регистрации, а использую код, скопированный из глав 7-9 руководства Майкла Хартла по рельсам. И это прекрасно работает в разработке! Но как только я нажимаю на Heroku, мое приложение подписывает пользователей после того, как они сохраняют изменения (обновления) в своем профиле. Правки сохраняются в базе данных корректно.

Вот github: https://github.com/crowdpublishtv/crowdpublishtv

Вот мой файл users_controller.rb:

class UsersController < ApplicationController
  before_filter :signed_in_user, only: [:index, :edit, :update]
  before_filter :correct_user,   only: [:edit, :update]

  def index
    @users = User.all
    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @users }
    end
  end

  def show
    @user = User.find(params[:id])
    @books = @user.books
    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @user }
    end
  end

  def blog
    @user = User.find(params[:id])
    respond_to do |format|
      format.html # blog.html.erb
      format.json { render json: @user }
    end
  end

  def profileinfo
    @user = User.find(params[:id])
    respond_to do |format|
      format.html # profileinfo.html.erb
      format.json { render json: @user }
    end
  end

  def booklist
    @user = User.find(params[:id])
    @books = @user.books
    respond_to do |format|
      format.html # booklist.html.erb
      format.json { render json: @user }
    end
  end

  def new
    @user = User.new
    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @user }
    end
  end

  def edit
    @user = User.find(params[:id])
    @books = @user.books
    @book = current_user.books.build if signed_in?
    @booklist = Book.where(:user_id => @user.id)
  end

  def create
    @user = User.new(params[:user])
    if @user.save
      sign_in @user
      redirect_to @user
    else
      render 'new'
    end
  end

  def update
    @user = User.find(params[:id])
    @booklist = Book.where(:user_id => @user.id)
    if @user.update_attributes(params[:user])
      sign_in @user
      redirect_to @user
    else
      render 'profileinfo'
    end
  end

  def destroy
    @user = User.find(params[:id])
    @user.destroy
    respond_to do |format|
      format.html { redirect_to users_url }
      format.json { head :ok }
    end
  end

  private

    def signed_in_user
      unless signed_in?
        store_location
        redirect_to signin_url, notice: "Please sign in." 
      end
    end

    def correct_user
      @user = User.find(params[:id])
      redirect_to(signin_url) unless current_user?(@user)
    end
end

person ThinQtv    schedule 25.06.2013    source источник
comment
Добавлен файл users_controller.rb и предоставлена ​​ссылка на Github. Но поскольку на моем локальном хосте это нормально, я думаю, что это не столько проблема с контроллером или методом обновления, сколько какая-то разница между разработкой и производством (у меня все еще есть config/environments/development.rb по умолчанию и config/environments/production .rb) или какая-то проблема с сохранением/удалением файлов cookie Heroku.   -  person ThinQtv    schedule 25.06.2013


Ответы (1)


Добавлен гем Devise, и эта проблема исчезла.

person ThinQtv    schedule 01.10.2013