我有一个 Rails 应用程序,用作数据混合的接口。我需要的大部分信息都是从使用 XML-RPC 的命令行程序中检索到的。除此之外,我需要一些额外的数据,我别无选择,只能存储在数据库中。出于这个原因,我很难弄清楚设计应用程序的最佳方法是什么。
我已经重写了self.all
并且self.find(id)
它们依赖于对对象的调用super
,然后通过将其实例变量定义为使用 XML-RPC 从程序中检索到的适当数据来“丰富”该对象。
不过,这一切似乎都很令人费解。例如,我想我已经失去了使用魔法探测器 ( find_by_x
) 的能力,我不知道是否会因此而破坏其他任何东西。
我的问题是,是否有一种更合乎逻辑和更明智的方式来做这件事。也就是说,设计一个应用程序,它的数据大部分依赖于 XML-RPC,但也有一些数据存储在数据库中。
我确实读过关于after_find
. 使用这个回调,我可以实现“对象丰富”过程,并让它在找到记录的任何时候运行。但是,我检索与项目关联的数据的方法与检索所有项目数据的方法不同。我检索所有项目数据的self.all
方式(如果有一种方法可以使回调不适用于调用,这将很有效。self.find
self.all