Программа урока
- Настройка ActiveStorage в проекте
- Базовая работа с файлами. Добавление, удаление, получение ссылки
- Продвинутая работа с файлами. Обработка, прямая загрузка
- Интеграции с AWS S3, Google Cloud, Microsoft Azure
# Содает миграции для ActiveStorage
bin/rails active_storage:install
bin/rails db:migrate
class User < ApplicationRecord
has_one_attached :avatar
validates :avatar, attached: true,
content_type: %i[png jpg jpeg],
size: { less_than: 5.megabytes }
end
Пример тестов
class VehiclesControllerTest < ActionDispatch::IntegrationTest
setup do
@vehicle = vehicles(:one)
@attrs = {
manufacture: Faker::Vehicle.manufacture,
model: Faker::Vehicle.model,
color: Faker::Vehicle.color,
doors: Faker::Vehicle.doors,
kilometrage: Faker::Vehicle.kilometrage,
production_year: Faker::Date.backward,
image: fixture_file_upload('hexlet.png', 'image/png')
}
end
test 'should get index' do
get vehicles_url
assert_response :success
end
test 'should get new' do
get new_vehicle_url
assert_response :success
end
test 'should create vehicle' do
post vehicles_url, params: { vehicle: @attrs }
vehicle = Vehicle.find_by(@attrs.except(:image))
assert { vehicle }
assert_redirected_to vehicle_url(vehicle)
end
test 'should show vehicle' do
get vehicle_url(@vehicle)
assert_response :success
end
test 'should get edit' do
get edit_vehicle_url(@vehicle)
assert_response :success
end
test 'should update vehicle' do
patch vehicle_url(@vehicle), params: { vehicle: @attrs }
@vehicle.reload
assert { @vehicle.manufacture == @attrs[:manufacture] }
assert { @vehicle.model == @attrs[:model] }
assert_redirected_to vehicle_url(@vehicle)
end
test 'should destroy vehicle' do
delete vehicle_url(@vehicle)
assert_redirected_to vehicles_url
assert { !Vehicle.exists? @vehicle.id }
end
end
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Об обучении на Хекслете
- Статья «Как учиться и справляться с негативными мыслями»
- Статья «Ловушки обучения»
- Статья «Сложные простые задачи по программированию»
- Вебинар «Как самостоятельно учиться»
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.