代码之家  ›  专栏  ›  技术社区  ›  sled

覆盖ActiveRecord的保存方法以使用自定义接口

  •  1
  • sled  · 技术社区  · 14 年前

    我有一个rails应用程序和两个数据库,一个用于rails应用程序,另一个数据库(运行在同一DB服务器实例上)用于不同的非web应用程序。

    我的railsweb应用程序可以通过SQL直接从(第二个)数据库中读取数据,但是由于安全限制(数据必须由非Web应用程序验证),它不能写入数据库。所以我们编写了一个基于SOAP的小CLI接口来写入数据库。

    我的问题是:我是否可以扩展ActiveRecord模型(rails3),使读取在SQL连接上正常进行,而update/create/delete在我们自己的接口上进行。

    感谢您的回复!

    2 回复  |  直到 14 年前
        1
  •  1
  •   sled    14 年前

    我想我找到了一个好办法:)

    @rtacconi:感谢您的链接,但是由于Rails3,您不必使用这些扩展,因为ActiveModel的工作方式是无表开箱即用:)

    因此,我的解决方案是重载ActiveRecord::Persistence模块(可以在ActiveRecord-3.0.0/lib/active\u record中找到)/持久性.rb.

    此模块负责数据库连接的所有写入任务。因此,我的持久层调用SOAP接口,而不是写入DB。

    西蒙

        2
  •  0
  •   Community ƒernando Valle    7 年前

    您可以实现无表模型: ActiveRecord::Base Without Table http://github.com/AnthonyCaliendo/acts_without_database

    然后使用SOAP库将数据设置/获取到对象中。