Главная / Интернет-технологии /
Разработка приложений на Ruby on Rails / Тест 10
Разработка приложений на Ruby on Rails - тест 10
Упражнение 1:
Номер 1
Терминальная команда rm
нужна для:
$ rm -f spec/factories/microposts.rb
Ответ:
 (1) Создания файла 
 (2) Переименования файла 
 (3) Перемещения файла 
 (4) Удаления файла 
Номер 2
add_index :cats, [:names, :created_at]
Данная строка:
Ответ:
 (1) Создает индексы на поля names
и created_at
 
 (2) Создает составной индекс на поля names
и created_at
 
 (3) Добавляет индексированные поля names
и created_at
к таблице cats
 
 (4) Создает индексированную таблицу cats
с полями names
и created_at
 
Упражнение 2:
Номер 1
validates :user_id, presence: true
presence
нужен для:
Ответ:
 (1) создания ключа 
 (2) создания индекса 
 (3) требования обязательного заполнения 
 (4) указания стандартного значения 
Номер 2
class Table < ActiveRecord::Base
... :room
end
Вместо многоточия введите метод для связи, который говорит о том, что стол связан с одной комнатой
Ответ:
 belongs_to 
Номер 3
class Table < ActiveRecord::Base
... :room
end
Вместо многоточия введите метод для связи, который говорит о том, что комната связана со многими столами:
Ответ:
 has_many 
Упражнение 3:
Номер 1
Как известно, в комнате может стоять несколько столов, но стол стоит в одной комнате. Соотнесите методы и их действия:
Ответ:
table.room |
→ |
hвозвращает объект-комнату, связанный с данным столом |
room.tables |
→ |
возвращает массив столов в комнате |
room.tables.create(arg) |
→ |
создает стол, привязанный к комнате |
room.tables.create!(arg) |
→ |
создает стол, привязанный к комнате и бросает исключение в случае неудачи |
room.tables.build(arg) |
→ |
возвращает новый объект-стол |
Номер 2
Возможно ли установить значение поля created_at
при сохранении записи в базе данных с помощью ActiveRecord
?
Ответ:
 (1) Да 
 (2) Нет 
Номер 3
Сохранится ли в базе данных пользовательское значение поля created_at
у сгенерированного экземпляра класса с помощью Factory Girl
?
Ответ:
 (1) Да 
 (2) Нет 
Упражнение 4:
Номер 1
Метод let!
используется для:
Ответ:
 (1) Выброса исключения при ошибке инициализации переменной 
 (2) Немедленной инициализации переменной 
 (3) Ленивой инициализации переменной 
 (4) Для применения действия переменной к самой себе 
Номер 2
Метод let
является ленивым, это значит:
Ответ:
 (1) Переменная инициализируется только при первом обращении 
 (2) Переменная инициализируется слишком долго 
 (3) Никогда не будет выброшено исключений 
 (4) Покрытие тестами составляет менее 50% 
Номер 3
default_scope
используется для
Ответ:
 (1) задания стандартного поведения таблицы в базе данных 
 (2) указания того, какая таблица будет использована в качестве стандартной 
 (3) изменения стандартных настроек хеширования 
 (4) управления нагрузкой 
Упражнение 5:
Номер 1
order('created_at ...')
Ввелите ключевое слово, для указания сортировки по возрастанию (в нижнем регистре):
Ответ:
 desc 
Номер 2
order('created_at ...')
Ввелите ключевое слово, для указания сортировки по убыванию (в нижнем регистре):
Ответ:
 asc 
Номер 3
lambda
- это:
Ответ:
 (1) Метод, который выполняется моментально 
 (2) метод, оценивающийся в момент вызова 
 (3) Метод, выполняемый в фоновом потоке 
 (4) Зеленый поток 
Упражнение 6:
Номер 1
class Room < ActiveRecord::Base
has_many :tables, dependent: :destroy
end
Данный код говорит о том, что:
Ответ:
 (1) При удалении записи в таблице Rooms
, все связанные с этой комнатой столы будут так же удалены из таблицы Tables
 
 (2) При уничтожении записи в таблице Tables
, связанная комната будет удалена из таблицы Rooms
 
 (3) Пока есть столы, связанные с комнатой, удалить данную комнату из таблицы Rooms
нельзя 
 (4) Пока есть комната, связанная с определенным столом, удалить данный стол из таблицы Tables
нельзя 
Номер 2
expect do
Table.find(table)
end.to raise_error(ActiveRecord::RecordNotFound)
Данный код нацелен на:
Ответ:
 (1) Поиск по таблице столов 
 (2) Выброс исключения 
 (3) Тест на выброс исключения во время поиска 
 (4) Перехват исключения 
Номер 3
Метод be_empty
в RSpec
it "should destroy associated microposts" do
microposts = @user.microposts.to_a
expect(microposts).to ...
end
Введите ключевое слово, которое тестирует массив на нулевой размер:
Ответ:
 be_empty 
Упражнение 7:
Номер 1
"a" * 10
Код вернет:
Ответ:
 (1) 970 
 (2) а10 
 (3) 10a 
 (4) аааааааааа 
 (5) Будет выброшено исключение 
Номер 2
user.microposts.count
:
Ответ:
 (1) Получает количество записей напрямую из базы данных 
 (2) Получает количество записей из специального файла 
 (3) Получает все записи из базы данных и определяет их количество локально 
Номер 3
<%= will_paginate @dogs %>
<%= will_paginate %>
В контексте контроллера Dogs данные строки:
Ответ:
 (1) Являются синонимами 
 (2) синонимами не являются и использование верхней строки приведет к ошибке 
 (3) синонимами не являются и использование нижней строки приведет к ошибке 
Упражнение 8:
Номер 1
<%= will_paginate @dogs %>
<%= will_paginate %>
В контексте контроллера Cats
данные строки:
Ответ:
 (1) Являются синонимами 
 (2) Синонимами не являются и использование верхней строки приведет к ошибке 
 (3) Синонимами не являются и использование нижней строки приведет к ошибке 
Номер 2
<%= render @dogs %>
Данная строка:
Ответ:
 (1) Итеративно выводит все данные из @dogs
на страницу 
 (2) Рендерит частичный шаблон _dog.html.erb
 
 (3) Выводит размер массива @dogs
 
 (4) Создает итератор для доступа к массиву @dogs
 
Упражнение 9:
Номер 1
SQL
инъекция это:
Ответ:
 (1) Внедрение поддержки базы данных в приложение 
 (2) Вид SQL
запроса 
 (3) Вывод результата SQL
запроса на страницу 
 (4) Вид атаки на приложение 
Номер 2
Более безопасным поиск по базе данных считается:
Ответ:
 (1) Путем изолированных обращений к каждой таблице 
 (2) Через связи 
 (3) С помощью ассоциаций 
 (4) С подтвердением по паролю