Есть какие-нибудь советы по запуску Rails с серверной частью Access?

StackOverflow https://stackoverflow.com/questions/20054

Вопрос

Мне страшно спрашивать, но мой клиент может не предложить другого решения SQL (или SQL-подобного).Я знаю, что в Access есть некоторые ловушки SQL;их достаточно для базового ActiveRecord?

Позже:

Я ценю все предложения по использованию других баз данных, но поверьте мне:Я пытался их убедить.Существует «утвержденный» список, и в нем нет баз данных SQL.Включение чего-либо в список может занять больше года, а этот проект будет завершен за три недели.

Это было полезно?

Решение

Это длинный путь, но есть Адаптер ODBC для ActiveRecord это может сработать.

Другие советы

Кажется, здесь есть что-то вроде адаптера подключения Access: http://svn.behindlogic.com/public/rails/activerecord/lib/active_record/connection_adapters/msaccess_adapter.rb

Файл data.yml будет выглядеть так:

development:
  adapter: msaccess
  database: C:\path\to\access_file.mdb

Я опубликую больше после того, как опробую это с Rails 2.1.

Другой вариант, более сложный, но который может сработать, если вас заставят это сделать, — это написать слой веб-сервисов RESTful, который будет предоставлять доступ к рельсам.Если вы будете осторожны при разработке, эти веб-службы RESTful могут использоваться непосредственно ActiveResoure, что предоставит вам большую функциональность ActiveRecord.

В Access есть некоторые странные вещи, которые могут вызвать проблемы, и я не знаю, позаботится ли об этом ODBC.Если это так, @Джон Топли прав, ODBC будет вашей единственной проблемой.

  1. Правда в доступе = -1, а не 1
  2. Access обрабатывает даты иначе, чем обычный TSQL.
  3. У вас могут возникнуть проблемы с налаживанием отношений.

Если вы воспользуетесь доступом, вы, вероятно, узнаете больше об отладке AcriveRecord, чем когда-либо хотели (что может быть неплохо)

Модит написал:

Правда в доступе = -1, а не 1

Не верно.Истина определяется как не ложь.Итак, если вы хотите использовать True в предложении WHERE, вместо этого используйте Not False.Это обеспечит полную кросс-платформенную совместимость со всеми механизмами SQL.

С учетом вышесказанного, это вряд ли проблема, поскольку какой бы драйвер вы ни использовали для подключения к серверной части, он правильно преобразует True в предложениях WHERE в соответствующее значение.Единственным исключением могут быть транзитные запросы, но в этом случае вам следует писать SQL вне Access, тестировать его на своей серверной части и просто вставлять рабочий SQL в представление SQL вашего сквозного запроса в Access.

Модит написал:

Access обрабатывает даты иначе, чем обычный TSQL.

Опять же, это будет проблемой только в том случае, если вы не воспользуетесь драйверами ODBC или OLEDB, которые позаботятся о переводе Jet SQL в TSQL за вас.

Модит написал:

У вас могут возникнуть проблемы с налаживанием отношений.

Я не уверен, почему вы хотите, чтобы приложение Access изменяло схему вашей серверной части, поэтому мне кажется, что это не проблема.

Вам действительно следует уговорить их разрешить использование SQLite.Его очень просто настроить, и он работает так же, как Access (как файл, расположенный рядом с приложением на том же сервере).

Во-первых, вы Действительно хочу использовать sqlite.

По моему опыту, сам Access представляет собой кучу [отредактировано], но механизм базы данных Jet, который он использует, на самом деле довольно быстрый и может обрабатывать некоторые довольно сложные SQL-запросы.Если вы сможете найти адаптер Rails, который действительно работает, я бы сказал, что с вами все будет в порядке.Просто не открывайте БД с помощью интерфейса доступа, пока ваше приложение Rails работает :-)

Если ваш клиент настолько анал, что позволяет вам разрабатывать только с утвержденным списком баз данных, его может больше беспокоить тот факт, что Джет устаревший и больше не получит поддержки от MS.

Это может дать вам некоторый стимул в вашем стремлении использовать реальную базу данных.Удачи

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top