当前位置:  开发笔记 > 后端 > 正文

存储数据库中引用的常量的最佳方法是什么?

如何解决《存储数据库中引用的常量的最佳方法是什么?》经验,为你挑选了1个好方法。

在我的数据库中,我有一个模型,其中有一个字段应该从一个选项列表中选择.例如,考虑需要存储测量的模型,例如5英尺或13厘米或12.24立方米.实现这一目标的显而易见的方法是使用十进制字段,然后使用其他字段来存储测量单位.

那么存储测量单位的最佳方法是什么?我过去曾使用过几种方法:

1)将各种选项存储在另一个数据库表(和相关模型)中,并将两者与标准外键相关联(通常需要加载相关模型).这似乎有点矫枉过正,因为你强迫数据库在每个查询上执行连接.

2)将选项存储为常量哈希值,加载到其中一个初始值设定项中,其中哈希值中的键存储在测量单位字段中.这样,您可以有效地在Ruby中进行连接(可能会或可能不会提高性能),但是您无法从"度量单位"方面进行查询.这不会是一个问题,只要你不太可能需要进行"以cm为单位找到所有测量值"的查询.

这些都不觉得我特别优雅..任何人都能提出更好的建议吗?



1> Ben Scofield..:

你见过constant_cache吗?它是1和2中最好的组合 - 查找数据存储在数据库中,但它在查找模型上作为类常量公开,仅在应用程序启动时加载,因此您不会经常遇到连接惩罚.以下示例来自README:

移民:

create_table :account_statuses do |t|
  t.string :name, :description
end

AccountStatus.create!(:name => 'Active',   :description => 'Active user account')
AccountStatus.create!(:name => 'Pending',  :description => 'Pending user account')
AccountStatus.create!(:name => 'Disabled', :description => 'Disabled user account')

模型:

class AccountStatus < ActiveRecord::Base
  caches_constants
end

使用它:

Account.new(:username => 'preagan', :status => AccountStatus::PENDING)

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有