Как мне создать готовый оператор вставки в сиквеле?

Я пытаюсь создать готовый insert заявление в продолжении, и я так далеко

db[:registration].prepare(:insert)
=> <Sequel::Mysql2::Dataset/PreparedStatement "INSERT INTO `registration` () VALUES ()">

Как мне создать утверждение, похожее на следующее:

INSERT INTO `registration` (`name`, `email`) VALUES (?, ?)

Документация немного тупая, и я не могу найти никаких примеров в Интернете.

2 ответа

Решение

Понял это, глядя на их rspecs:

statement = db[:registration].prepare(:insert, :prepared_statement_name, :email => :$email, :name => :$name)
statement.call(:name => "foo", :email => "foo@bar.com")

НОТА

Ключи, которые передаются .call соответствуют значениям, переданным в хеше в prepare, Так что это будет работать тоже:

statement = db[:registration].prepare(:insert, :prepared_statement_name, :email => :$e, :name => :$n)
statement.call(:n => "foo", :e => "foo@bar.com")
ds = db[
         "INSERT INTO `registration` (`name`, `email`) VALUES (?, ?)", 
         name, email
     ]
ds.call(:insert)
Другие вопросы по тегам