Как подключиться к базе данных в rails и получить результаты без типичной настройки базы данных - PullRequest
1 голос
/ 22 октября 2011

У меня есть приложение, использующее Ruby on Rails, где пользователь будет предоставлять строку подключения и будет запрашивать данные из своей базы данных. Я нашел ссылку, которая поможет мне в этом, и решил написать вопрос, чтобы узнать, есть ли у кого-нибудь в этом опыт. Вот что я нашел:

def fetch_value
    sql = ActiveRecord::Base.connection();
    sql.execute "SET autocommit=0";
    sql.begin_db_transaction 
    id, value =
    sql.execute("SELECT id, value FROM sometable WHERE used=0 LIMIT 1 FOR UPDATE").fetch_row;
    sql.update "UPDATE sometable SET used=1 WHERE id=#{id}";
    sql.commit_db_transaction 

    value;
end

Я пишу это приложение, чтобы быть похожим на phpmyadmin, но в рельсах. Я не знаю структуру таблиц, но я бы хотел вернуть json-результаты по указанным запросам.

Мне нужно иметь возможность создавать соединение, получать список результатов и выводить результаты в формате json, не зная слишком много. Любая помощь будет оценена.

1 Ответ

1 голос
/ 22 октября 2011

Active Record - это библиотека объектно-реляционного сопоставления, которая означает, что она отображает (известные) таблицы на объекты в Ruby.Active Record предоставляет способы прямого доступа к SQL, как вы делали в своем примере, но это не «нормальный» вариант использования.В этом случае вам понадобится нечто более общее.

Вы можете взглянуть на Sequal .Это библиотека Ruby, которая абстрагирует синтаксис SQL далеко, но не совсем в расширение Active Record, где у вас есть строгая таблица для сопоставления объектов.

Если Sequal все еще мешает, вы можете использовать raw Модуль MySql Ruby .Очень мощный, но, вероятно, должен быть последним средством из-за ручной работы, которую вы должны выполнить.

Также помните, что вы все еще можете использовать Active Record для своей базы данных приложения - возможно, пользователям необходимо зарегистрироваться и зарегистрироваться.Затем используется модуль Sequal или Mysql Ruby, где ваши пользователи непосредственно вводят подробности о БД.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...