回答
Rails迁移用于创建和更新数据库。
我与偏好相当慵懒并存储数据的序列化JSON或YAML哈希值。工作得很好,通常也保留数据类型。
我用单行表单,每列表示一个首选项。这使得可能有不同的数据类型。
为了能够获取的偏爱,我推翻method_missing
能够直接从类名检索喜好值,而不需要一个实例,像这样:
class Setting < ActiveRecord::Base
@@instance = self.first
def self.instance
@@instance
end
def self.method_missing(method, *args)
option = method.to_s
if option.include? '='
var_name = option.gsub('=', '')
value = args.first
@@instance[var_name] = value
else
@@instance[option]
end
end
end
因此,以检索设置,你可以使用:
a_setting = Setting.column_name
这没什么,但是如果我想要设置具有名为'data_type'的字段呢?所以设置可以是例如整数,浮点数,布尔值。 – 2010-01-29 08:02:07
@Igor:那没用。通过使用基于列的存储,您可以让数据库定义数据类型,并且不需要为其分配单独的列。您正在考虑每个设置有一行,并且数据类型只有一列。我的例子是单行,每列可以是任何你想要的数据类型。 – JRL 2010-01-29 08:19:51
是的,也许你是对的:) – 2010-01-29 09:45:26
我写了的宝石,正是这一点,最近更新它为Rails 3:
对于Rails 3的:
http://github.com/paulca/configurable_engine
对于Rails的2.3.x版本
http://github.com/paulca/behavior
享受!
- 1. 如何在数据库中保存不同的方法参数?
- 2. Stateful Rails应用程序。不在数据库中存储数据
- 3. 如何使用不同数量的参数使用spring存储库从数据库创建选择?
- 4. 在数据库中存储秒 - Rails
- 5. Rails:在数据库中存储翻译
- 6. 不在数据库中存储数据
- 7. 如何使用C#将数据存储在数据库中?
- 8. 如何使用Textarea将此数据存储在数据库中?
- 9. 如何使用asp.net将数据存储在sql数据库中#
- 10. 如何在关系数据库中存储不同版本的数据?
- 11. 如何使用数据存储库
- 12. 将数据存储在没有数据库的Ruby on Rails中
- 13. 如何测试在数据库中使用UDF的Django站点?
- 14. Rails数据库 - 如何使用用户密码存储加密数据?
- 15. 不能存储在不同表的值在数据库中
- 16. 如何使用javascript将数据存储到mysql数据库中?
- 17. 如何使用javascript将数据存储到数据库中
- 18. 如何在数据库中存储
- 19. 如何在数据库中存储“\”?
- 20. 如何在android数据库中存储
- 21. 如何在Java中以不同数量的行存储数据?
- 22. 在不使用数据库的情况下存储数据android
- 23. 如何存储在数据库中的网络推端点URL
- 24. 如何使图片存储在数据库中,作为不同的链接?
- 25. 使用Laravel4中的ANGULARJS将数据存储在数据库中
- 26. 如何使用通用的数据库中获取,使用企业库中的存储过程的参数
- 27. Rails - 带属性的模型,不存储在数据库中
- 28. C如何在内存中存储不同的数据类型?
- 29. 数据库设计:如何在数据库中存储XML/JSON?
- 30. 地址参数存储在如何数据库
如何使用无模式数据库呢? 它会表现得更好,并且更容易用JSON哈希查询。 – CodeJoust 2010-01-29 06:11:05
你可以,但是你需要为所有的事情抛弃你的RDBMS,或者一起运行这两者来增加你的成本。将数据库中的字符串拉到反序列化的性能非常好,特别是在使用JSON和JSON gem时。使用像MongoDB这样的数据库,你仍然会有反序列化开销。 – 2010-01-29 23:31:43