Rails持久化键值存储:仅限于数据库吗?

4

我设计了一个 Rails 应用程序,并将其大量模型组织在专用表中(这样应该做)。

最近,我一直在尝试将我的应用程序的硬编码参数(标题等)提取到 YAML 配置文件中。虽然我对这种方法感到满意,但问题是我无法通过应用程序动态修改它们,只能从文本编辑器中进行修改。

现在,我考虑使用专用数据库表来存储它们,但这似乎有点过度,因为这个 settings_table 将有很多字段,而且只有一个对象。

基本上,我正在寻找一个简单的长期(永久)键-值存储。Reddis 服务器显然也是一个过度。看起来 ActiveRecord::Cache::Store 可能是一个解决方案,但我不确定长期部分。

如何以“真正的” Rails 方式实现此目标?

编辑:数据类型

几十个键->字符串值,像这样:

page_title: "My Awesome Website"
full_name: "James Bond"
occupation: "Secret Agent"
facebook_account: "www.facebook.com/007"
1个回答

2

不需要为每个键创建一个列,可以只有一个单独的列并以序列化格式存储数据。通过这种方式,即使在未来想要添加更多数据也没有任何问题。

http://apidock.com/rails/ActiveRecord/AttributeMethods/Serialization/ClassMethods/serialize 可提供一些参考,或者您可以将数据视为哈希表使用 to_json 和 JSON.parse 方法。

对于您的情况如下所示:

config_data = {page_title: "我的超级网站", full_name: "詹姆斯 · 邦德", occupation: "秘密特工", facebook_account: "www.facebook.com/007"}

config_data.to_json 可以直接存储在数据库中,要读取则使用 JSON.parse(dbvalue)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接