有可能-是的。
在Rails中,您拥有ActiveModel::Model
,这是一个包含验证,属性分配,表单集成,多态路由等的模块。除通常由ActiveRecord提供的实际持久层之外,几乎所有其他内容。您还可以仅通过包含子模块来选择功能。
从Rails 5开始,您还拥有ActiveModel::Attributes
,它为过去的内部功能提供了公共api。它提供类型转换和定义默认值的好方法。
class MyModel
include ActiveModel::Model
include ActiveModel::Attributes # not included in the above
attribute :awesomeness,:integer,default: 0
# ...
end
但是如何将其与JSON文件一起使用?
您可以创建一个类方法或单独的呼吸类,以加载和解析JSON文件并创建模型实例:
class MyModel
include ActiveModel::Model
include ActiveModel::Attributes # not included in the above
attribute :awesomeness,default: 0
# ...
def self.all
data = JSON.parse(File.open('/path/to/file.json'))
data.map do |hash|
new(hash)
end
end
end
这是个好主意吗?
除非用例非常简单,否则不会。要查找单个条目,您必须解析并将整个文件加载到内存中。然后,您必须使用可枚举的基本数组操作。任何种类的数据库系统都经过优化,可以更有效地执行此操作。
如果要部署到任何类型的临时文件系统(如Heroku),则它与SQLite具有相同的缺点。对文件的任何更改将定期被完全覆盖。
如果通过git进行部署,这还意味着您必须将数据检入代码库。这很少是一个好主意,因为它会极大地增加用户流失和筛选所需的噪声量,以查找代码库中的实际更改。
任何nosql或sql数据库都可以更好地做到这一点。
,
您将编写普通的旧Ruby并提供所需的功能。 ActiveModel在这里并不是真的有用。
如果您正在读取输出JSON的RESTful API,则可以使用ActiveReource,但如果仅从磁盘上加载文件,那将无济于事。
本文链接:https://www.f2er.com/3144568.html