假设有一个用Ruby on Rails编写的Web应用程序。该应用程序的一部分状态由一些数据表示,但这些数据并不符合模型的描述。需要将此状态描述符持久化到与模型相同的数据库中。
与模型不同的是,它的类只需要一个实例,并且没有与其他类的关系。
有人遇到过类似的情况吗?
如果是数据,并且在数据库中,那么它就是模型的一部分。
这不是一个真正的RoR问题,而是一个通用的OO设计问题。
如果是我,我可能会找到一种将数据概念化为模型的方法,然后只需使用工厂方法和私有构造函数将其作为单例。
或者,您可以将其视为一种日志记录形式。在这种情况下,您只需要一个Logger类(也是单例),直接读/写数据库,并在每个请求的开始和结束时调用它。
class ApplicationController < ActionController::Base
helper :all
@data = "YOUR DATA HERE"
end
有许多方法可用于实例化数据以在Rails应用程序中使用。
ComplexThing.data = complex_hash.inspect
当您想要读回它时,只需
complex_hash = eval ComplexThing.data
让我指出这个解决方案的另外两点: