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/.
В традиции 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, Вы будете знать все самые важные.