新手问题 小数据,需要便捷访问,不存数据库,应该放在那里?

fengzhe · 2014年01月05日 · 最后由 lb563 回复于 2014年01月06日 · 2551 次阅读

我在做一个简单的 CMS 系统。碰到了一个这样的问题。在创建每一个页面的时候。需要给页面一个属性 type。

在 render 页面时,代码里是根据 type 来渲染页面的。在创建页面的时候,需要选择页面的 type。

我在 mongodb 里建了个 collection:types,有两个 column,id,type_name。一共有 5 个 type。也就是有 5 行数据。

但当我部署时,问题出现了。由于我渲染页面时,要根据不同的 type 使用不同的模板,所以需要在任何环境(开发,staging,produnction)保证 type 的 id 是一样的。不管我用什么当 id(mongo objectId,string:自己生成)总要面临一个问题,就是要保证任何环境下,types 是一致的。

所以我觉得把 types 放在数据库里并不是一个好办法。我在考虑直接把 types 存在一个 yml 活 json 文件里(types 不会有很多数据)。

我的问题是, 1,yml,json 用哪个更好(best practice) 2,应该把文件存在哪里?(config?lib?app?)

type 太多含义了,看完还是没了解场景。一般来说:

  1. yaml
  2. config

1:个人现在正在用的 yml 配置文件 2:我会放到 config/initializers/type_define.rb 中

我又看了一遍

需要给页面一个属性 type。

这不是页面的一个字段吗?

这不就跟 Active Record Enums 差不多。自己写个,说不定别的地方还可能用到

#3 楼 @Rei 是的,就是一个字段,很简单的。其实就是 string。简单来说,我完全可以放在一个 array 里: ["image", "text", "image gallery"]. 我只是想知道。应该在那里放,存成什么格式?要方便访问。

刚开始接触 rails,不是很了解。

#4 楼 @Ddl1st 对的。就是 ENUM。不会写呀。从来没接触过。能给个介绍链接么?

ruby-toolbox 搜下 https://github.com/lwe/simple_enum 建议自己写个

我现在的做法是,在我建立页面的 controller 里面,建了个 method:

before_action :set_types

def set_types
  @types = %w(image gallary)
end

但这样我就无法在其他代码里访问了。

#7 楼 @Ddl1st 我用的是 mongoid。并且不是很想存在数据库里。

#8 楼 @fengzhe 那你就在 model 里面写个常量

#5 楼 @fengzhe 固定值,而且和逻辑绑定的,就用常量行了。

放在 enum 里

settingslogic +1

需要 登录 后方可回复, 如果你还没有账号请 注册新账号