Найти тему

Практика Ruby №22(sql, sinatra,configure/before)

По большей части создаю это для себя, но если кому-то пригодится попрактиковаться в Ruby с самого начала, то welcome =)

По мере своего продвижения обучения буду пополнять конспект новыми знаниями, поэтому не судите строго

По сути, это просто краткий конспект, в который я записываю все, что хочу запомнить или сложно запоминается, плюсом ко всему записывать и придумывать себе задания для практики.

Все материалы для конспекта взяты с rubyschool.us

a+b == 4 ? true : false
<option <%= @barber == 'Леонард Хофстедер' ? 'selected' : ''%>>Леонард Хофстедер</option>

В SQLite varchar = text, отличие в том, что в других базах данных varchar задается длинна:

varchar (200)

nvarchar и ntext - означает, что поддерживается юникод. В SQLite он поддерживается по умолчанию

Создание базы данных при инициализации приложения:

Инициализация происходит каждый раз при изменениях в файле rb, или при новом запуске веб-сервера

require 'sqlite3'
configure do
db = SQLite3::Database.new 'barbershop.db'
db.execute 'CREATE TABLE if not exists `users` # при инициализации может быть ошибка о том что бд уже существует, поэтому лучше добавить " if not exists ", т.е. создать таблицу users в бд Barbershop если ее не существует.
(
`id` INTEGER PRIMARY KEY AUTOINCREMENT,
`name` TEXT,
`phone` TEXT,
`datestamp` TEXT,
`barber` TEXT,
`color` TEXT
)'
end

Вызов исполнения кода RUBY на странице(Sinatra):

<select name="choose_barber" class="custom-select custom-select-lg mb-3">
<%@barber.each do|item|%>
<option><%= item['name']%></option>
<%end%>

configure do # запускается при конфигурации приложения (перезапустили синатру)
end
before do # запускается при обращении у любому URL
end

Добавление в БД, используя код Ruby, с уникальностью:

def is_barber_exist? db, name
db.execute('select *from barber where name=?', [name]).length > 0
end
def seed_db db, barbers
barbers.each do |barber|
if !is_barber_exist? db, barber
db.execute 'insert into barber (name) values (?)', [barber]
end
end
end