有关使用Access后端运行Rails的任何提示?

时间:2008-08-21 14:21:56

标签: ruby-on-rails ruby ms-access activerecord

我不禁要问,但我的客户端可能不会提供其他SQL(或类似SQL)的解决方案。我知道Access有一些SQL钩子;它们是否足以用于基本的ActiveRecord?

随后:

我很欣赏使用其他数据库的所有建议,但请相信我:我试过说服他们。有一个“已批准”列表,并且没有SQL数据库。将一些东西列入清单可能需要一年多的时间,而这个项目将在三周内完成。

7 个答案:

答案 0 :(得分:3)

这是一个很长的镜头,但有ODBC adapter for ActiveRecord可能有用。

答案 1 :(得分:2)

这里似乎有一些Access连接适配器:http://svn.behindlogic.com/public/rails/activerecord/lib/active_record/connection_adapters/msaccess_adapter.rb

database.yml文件如下所示:

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

在我用Rails 2.1尝试后,我会发布更多内容

答案 2 :(得分:1)

另一个更复杂但可以在你被迫这样做的情况下工作的选项是编写一层RESTful Web服务来公开Access to rails。如果您对设计非常小心,ActiveResoure可以直接使用这些RESTful Web服务,这将为您提供ActiveRecord的许多功能。

答案 3 :(得分:1)

Access中有一些可能导致问题的奇怪内容,我不知道ODBC是否会处理它。如果它确实@John Topley是对的,ODBC将是你唯一的癌症。

  1. 访问时为真= -1而不是1
  2. Access会以不同于常规TSQL的方式处理日期。
  3. 您可能会遇到创建关系的麻烦。
  4. 如果您有权访问,可能会了解更多有关您对AcriveRecord进行调解的信息(这可能并不是一件坏事)

答案 4 :(得分:1)

Maudite写道:

  

访问时为真= -1而不是1

不正确。 True被定义为不是假的。因此,如果要在WHERE子句中使用True,请改用非False。这将提供与所有SQL引擎的完全跨平台兼容性。

所有这一切都说明了,这几乎不是问题,因为你用来连接后端的驱动程序会将WHERE子句中的True正确转换为适当的值。唯一的例外可能是直通查询,但在这种情况下,您应该在Access外部编写SQL并针对后端对其进行测试,并将工作SQL粘贴到Access中的直通查询的SQL视图中。

Maudite写道:

  

Access以不同于常规TSQL的方式处理日期。

同样,如果您不通过ODBC或OLEDB驱动程序,这将只是一个问题,它将负责将Jet SQL转换为TSQL。

Maudite写道:

  

你可能在创建关系时遇到麻烦。

我不确定为什么你希望Access应用程序改变后端的架构,所以在我看来这似乎是一个非问题。

答案 5 :(得分:0)

你应该真正谈论它们允许SQLite。设置起来非常简单,并且像Access一样运行(作为位于同一服务器上的应用程序旁边的文件)。

答案 6 :(得分:0)

首先,确实想要使用sqlite。

根据我的经验,Access本身就是一堆[编辑],但它使用的Jet数据库引擎实际上非常快,可以处理一些非常复杂的SQL查询。如果你能找到真正有效的导轨适配器,我会说你会好的。在rails应用程序运行时,只是不要使用访问前端打开数据库: - )

如果您的客户足够肛门只允许您使用经过批准的数据库列表进行开发,那么他们可能会更关注Jet is deprectated并且不会再获得MS的支持。

这可能会为您使用真实数据库提供一些弹药。祝你好运