Глава 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.
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