2013-07-26 5 views
0

Я пытался создать гостя через сеанс в Rails без какой-либо модели пользователя или разработки и т. Д., Я просто хочу, чтобы гость был создан одним кликом.Создайте гость без пользователей

Гость тогда имеет ряд предпочтения шагов (используя Злой драгоценный камень)

Я создал модель Гостевого который просто создает новый гость на первый щелчок.

Каждый шаг предпочтений я пытаюсь запустить контроллер с:

@guest = current_user 

Я добавить следующий код в мой контроллер приложения для «» CURRENT_USER

def current_user 
    @_current_user ||= session[:current_user_id] && 
    Guest.find_by_id(session[:current_user_id]) 
end 

Это действие, которое создает гость:

def start 
    @guest = Guest.create 
     if @guest.save 
    session[:guest_id] = @guest.id 
    redirect_to would_you_rather_path(:goalkeeper) 
    end 
end 

Проблема у меня есть вызов @guest = current_user возвращает nil, что, я считаю, означает, что метод current_user не подходит для моего приложения.

Мне нужна гостевая сессия, которая будет называться как начало каждого шага.

Благодарна за любую помощь/руководство

Благодаря

+1

Почему вы устанавливаете 'session [: guest_id]' в 'start' и пытаетесь найти' Guest' в 'session [: current_user_id]' методом 'current_user'? –

+0

вы говорите, что он возвращает ноль - где он это делает? в консоли или в браузере или в тестовом наборе? можете ли вы вставить полные сообщения об ошибках? – dax

ответ

1

В start действии вы устанавливаете session[:guest_id] и current_user вы пытаетесь найти через session[:current_user_id]. Я вернусь nil.

Ваш current_user должен быть как:

def current_user 
    @_current_user ||= Guest.find_by_id(session[:current_user_id]) if session[:current_user_id] 
end 

start должен быть как:

def start 
    @guest = Guest.create 
    if @guest.save 
     session[:current_user_id] = @guest.id 
     redirect_to would_you_rather_path(:goalkeeper) 
    end 
end 

Еще одна вещь, мы всегда должны пытаться использовать действие по умолчанию 7, что рельсы обеспечивает, Вы должны использовать create действие вместо start.

Смежные вопросы