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

时间:2010-09-06 15:25:46

标签: ruby-on-rails activerecord interface writing

我遇到以下情况:

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

我的Rails Web应用程序可以直接通过SQL从(第二个)数据库读取,但由于安全限制而无法写入(数据必须由非Web应用程序验证)。因此,我们编写了一个基于SOAP的CLI接口,用于写入数据库。

我的问题是:我是否可以通过某种方式扩展ActiveRecord模型(Rails 3),以便在SQL连接上正常读取,但更新/创建/删除通过我们的自制界面。

感谢您的回复!

2 个答案:

答案 0 :(得分:1)

我想我找到了一个很好的解决方案:)

@ rtacconi:感谢您的链接,但是从Rails 3开始,您不必使用这些扩展,因为ActiveModel可以开箱即用工作表了。

我需要完整的ActiveRecord支持来读取表格,但写作是通过我的SOAP接口完成的。这是因为我无法验证Rails应用程序中的数据。

所以我的解决方案是重载ActiveRecord :: Persistence Module(可以在activerecord-3.0.0 / lib / active_record / persistence.rb中找到。

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

祝你好运

西蒙

答案 1 :(得分:0)

您可以实施无表格模型:ActiveRecord::Base Without Tablehttp://github.com/AnthonyCaliendo/acts_without_database

您可以使用SOAP库将数据设置/获取到对象中。

相关问题