# coding: utf-8

Глава 8 Регистрация

Теперь у нас есть рабочая модель User, пришло время добавить возможность без которой некоторые сайты просто жить не могут: позволить пользователям регистрироваться на сайте; таким образом выполнив обещание подразумевавшееся в Разделе 5.3, “Регистрация пользователей: Первый шаг”. Мы будем использовать HTML форму для предоставления пользователями регистрационной информации нашему приложению в Разделе 8.1, которая затем будет использована для создания нового пользователя и сохранения его атрибутов в базе данных в Разделе 8.3. Как обычно, мы будем писать тесты по мере разработки и в Разделе 8.4 мы будем использовать поддержку RSpec синтаксиса веб навигации для написания кратких и выразительных интеграционных тестов.

Так как мы будем создавать новых пользователей в этой главе, вы можете сбросить базу данных, чтобы удалить всех пользователей, созданных в консоли (например, в Разделе 7.3.2), чтобы ваши результаты соответствовали тому, что показано в учебнике. Вы можете сделать это следующим образом:

$ rake db:reset

Если вы используете управление версиями, создайте тему ветки, как обычно:

$ git checkout master
$ git checkout -b signing-up

8.1 Регистрационная форма

Напомним из Раздела 5.3.1 что у нас уже есть тесты для new users (signup) страницы, первоначально рассматривавшиеся в Листинге 5.26 и воспроизведенные в Листинге 8.1. (Как и было обещано в Разделе 7.3.1, мы переключились с get ’new’ на get :new потому что это то, что мои пальцы хотят печатать.) Кроме того, мы видели в Рис. 5.10 (еще раз показано в Рис. 8.1) что эта страница регистрации в настоящее время чиста: совершенно бесполезна для регистрации новых пользователей. Цель этого раздела - положить начало исправлению этого печального положения дел, сделав форму регистрации, макет которой показан в Рис. 8.2.

Листинг 8.1. Тесты для страницы new users (впервые показанные в Листинге 5.26).

spec/controllers/users_controller_spec.rb
require 'spec_helper'

describe UsersController do
  render_views
  .
  .
  .
  describe "GET 'new'" do

    it "should be successful" do
      get :new
      response.should be_success
    end

    it "should have the right title" do
      get :new
      response.should have_selector("title", :content => "Sign up")
    end
  end
  .
  .
  .
end
blank_signup_page

Рисунок 8.1: Страница регистрации на данный момент /signup(полный размер)
signup_mockup

Рисунок 8.2: Макет страницы для регистрации пользователей. (полный размер)
# coding: utf-8