Как выполнить необработанные SQL-запросы с Продолжением

Я еще не ясен на надлежащем способе выполнить необработанные SQL-запросы с Продолжением.

В настоящее время я пробую это:

DB.fetch("SELECT * FROM zone WHERE dialcode = '#{@dialcode}' LIMIT 1") do |row|
 @zonename = row
end

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

if @zonename.name = "UK"
14
задан the Tin Man 30 October 2016 в 23:06
поделиться

1 ответ

У меня есть несколько указателей, которые могут быть полезны:

  1. Вы можете просто сделать:

    @zonename = DB.fetch("SELECT * FROM zone WHERE dialcode = ? LIMIT 1", @dialcode).first
    

    NB: вы игнорируете тот факт, что результатов, соответствующих критериям, может быть больше. Если вы ожидаете, что будет возвращено несколько возможных строк, то вы, вероятно, захотите создать массив результатов, сделав ...

    @zonename = DB.fetch("SELECT * FROM zone WHERE dialcode = ? LIMIT 1", @dialcode).all
    

    и обрабатываем их все.

  2. Возвращаемый набор представляет собой хэш. Если @zonename указывает на одну из записей, то можно сделать

    @zonename[:column_name] 
    

    для ссылки на поле с именем "имя_колонки". Вы не можете сделать @zonename.colum_nname (на самом деле вы можете украсить @zonename вспомогательными методами с помощью некоторого мета-программирования, но давайте пока пропустим этот момент).

Sequel - отличный интерфейс, чем больше вы узнаете о нем, тем больше он вам понравится.

11
ответ дан 1 December 2019 в 10:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: