Rails 请教一个问题,如何把数据库中的内容变成 Ruby 代码

Peter · 2015年12月27日 · 最后由 peter 回复于 2016年01月01日 · 2102 次阅读

有个 Ruby 文件中有一段下面的代码:

case foo
  when 'a'
    ' {{abc}}'
  when 'b'
    ' {{xxx}}'
  when 'cdd'
    " fdsf wdfdsa fdsfasfs fdsaffasf    fad f\n \b"
  when 'fxd'
    " ffff ddd eee ddd f    fad f\t sse"
  :
  :
end

其实就是一个对应关系,可能有几十上百个,还可能经常改,如果写死在文件里,改动就很麻烦。 所以我准备把这个对应关系 scaffold 一下,存到数据库,改起来也方便。

现在我要在这个 Ruby 文件里读取存在数据库中的对应关系,并还原开始那段 case when 的代码,请问怎么做呢?谢谢!

按照 [condition, exec] 的格式存到数据库。

调用的时候用 foo 去查找数据库里对应的 condition 那条记录。 读出来 eval exec

或者直接把所有的记录读出来作为一个数组。 一样的用 foo 去找数组里对应的项,然后 eval

第一种方法受数据库查询的限制,一般讲数据库不支持那么多匹配的方法。 第二种方法需要更多内存,并且需要 write-through cache,否则速度要慢一些。

你 where 里传原来写在 when 的条件,找到了就取出内容,用 eval 执行

#1 楼 @emayej #2 楼 @mars

谢谢两位,已经搞定,用的一样第二种方法

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