# coding: utf-8

2.2 Ресурс Users

В этом разделе мы реализуем модель данных пользователей из Раздела 2.1.1, наряду с веб-интерфейсом к этой модели. Эта комбинация образует ресурс Users, который позволит нам думать о пользователях как об объектах, которые могут быть созданы, считаны, обновленны, и удаленны через сеть с использованием HTTP протокола.

Как обещалось во введении, наш ресурс Users будет создаваться программой scaffold generator, которая стандартно поставляется с каждым проектом Rails. Аргумент команды scaffold это имя ресурса в единственном числе (в данном случае, User), вместе с дополнительными параметрами для атрибутов модели данных:4

  $ rails generate scaffold User name:string email:string
        invoke  active_record
        create    db/migrate/20100615004000_create_users.rb
        create    app/models/user.rb
        invoke    test_unit
        create      test/unit/user_test.rb
        create      test/fixtures/users.yml
         route  resources :users
        invoke  scaffold_controller
        create    app/controllers/users_controller.rb
        invoke    erb
        create      app/views/users
        create      app/views/users/index.html.erb
        create      app/views/users/edit.html.erb
        create      app/views/users/show.html.erb
        create      app/views/users/new.html.erb
        create      app/views/users/_form.html.erb
        invoke    test_unit
        create      test/functional/users_controller_test.rb
        invoke    helper
        create      app/helpers/users_helper.rb
        invoke      test_unit
        create        test/unit/helpers/users_helper_test.rb
        invoke  stylesheets
        create    public/stylesheets/scaffold.css

Добавив name:string и email:string, мы добились того, что модель User приобрела форму из Рис. 2.2. (Отметьте, что нет надобности включать параметр для id; он создается Rails автоматически.5)

Чтобы продолжить с демонстрационным приложением, мы сначала должны migrate (мигрировать, переместить) базу данных, используя Rake (Блок 2.1):

  $ rake db:migrate
  ==  CreateUsers: migrating ====================================================
  -- create_table(:users)
     -> 0.0017s
  ==  CreateUsers: migrated (0.0018s) ===========================================

Это просто обновляет базу данных с нашей новой моделью данных users. Мы узнаем больше о миграциях базы данных в Разделе 6.1.1.

Теперь мы можем запустить локальный веб-сервер, используя rails s, что является сокращением для rails server:

  $ rails s

При этом демонстрационное приложение уже должно быть готово в https://localhost:3000/.

Блок 2.1. Rake

В традиции Unix, make утилита играет важную роль в сборке исполняемых программ из исходного кода; множество компьютерных хакеров зафиксировали в мышечной памяти строку

  $ ./configure && make && sudo make install

обычно используемую, чтобы скомпилировать код на Unix- системах (включая Linux и Mac OS X).

Rake это Ruby make, make -подобный язык написанный в Ruby. Rails использует Rake, в значительной степени, специально для неисчислимых небольших административных задач, необходимых при разработке поддерживаемых базой данных веб-приложений. rake db:migrate команда, вероятно, наиболее распространена, но есть и многие другие; можно увидеть список задач базы данных, используя -T db:

  $ rake -T db

Чтобы увидеть все доступные задачи Rake, запустите

  $ rake -T

Список, вероятно, будет подавляющим, но не волнуйтесь, Вы не должны знать все (или даже большую часть) этих команд. К концу Учебника Rails, Вы будете знать все самые важные.

# coding: utf-8