Все материалы для конспекта взяты с rubyschool.us
Миграции Rake
Предварительно должны быть установлены все используемые гемы и должен присутствовать Rakefile и Config.ru
Как делаются миграции:
1) в файле приложения обязательно должно быть следующее:
set :database, "sqlite3:name.db", где name - название базы данных (действительно для SQLite3)
2)Создаем модель. Модель это наш класс с помощью которого мы обращаемся к базе данных, через ActiveRecord
Class Name < ActiveRecord::Base , где Name - название нашего класса
end
3)rake DB:create_migration NAME=name_of migration, где name_of migration - имя миграции.
Эта команда автоматически создает файл миграции с раширением .rb
4) редактирование файла миграции
create_table :names do |t|
t.text :name
t.text :datestamp
t.timestamp
Name.create :name=>'name', :datestamp=>'datestamp'
end
Будет создана таблица с названием names (обязательно смотреть, чтобы было название во множестенном числе), в которой будет 3 столбца: id(создается автоматически) name, datestamp
t.timestamp - дополнительные столбцы в которых будет указана дато создания и дата модификации
Name.create :name=>'name', :datestamp=>'datestamp' создается запись в БД, параметы передаются как хэш
в одном файле миграции можно создать несколько таблиц
5)исполняем rake db:migrate
Рефакторинг кода с использованием ActiveRecord
для post, в файле приложения .rb
создаем объект, с параметром в виде хэша
с = Client.new client[:params]
и сохраняем в бд
c.save
Метод save перед тем как сохранить, делает валидацию значений
для предствления .erb
в теге <input> атрибуту name="" присваеваем значения название столбцов той таблицы в которую вписываем
name="client[name]"/"client[barber]"/"client[phone]"/"client[datestamp]"/"client[color]"
В AR есть метод validates где первым параметром указывается, что проверять, а дальше идет хэш
validates :name, presence: true
для сохранения параметров на странице представления, необходимо в фале приложения в get запросе определить экземпляр класса(глобальный)
в файле представления в атрибуте value="" подставить следующее:
<%= @c.name%>
В этом случае введенные значения будут сохраняться при обнолвении страницы
Сделать страницу для каждого парикмахера:
1) сделать ссылки для нашего списка парикмахеров:
<h2>Список парикмахеров</h2>
<%@barbers.each do |barber|%>
<p>
<a href="barber/<%= barber.id %>"><%= barber.name%></a>
</p>
<%end%>
2)добавить get обработчик:
get '/barber/:id' do
erb :barber
end
3)создаем отдельно представление barber.erb
<h2>Страница парикмахера</h2>
<p>Имя: <%= @barber.name %></p>
4)Объявим переменную которой присваивается значение через поиск id, использую ActiveRecord
@barber = Barber.find(params[:id])