Rails ror+mongodb 中的中 filed 类型

yhuiche · 2013年02月19日 · 最后由 yhuiche 回复于 2013年02月20日 · 2346 次阅读

我在做一个东西,用的是 ror+mongodb,其中一个 class 中有个 filed 的类型不确定,这个类型要根据初始化时传入的参数的类型而定。我弄晕了还是没搞定。。跪求各位救命啊啊啊。。。 本来打算用下面这个思路的,但是从数据库用出来后类型总是 Hash,而不是我要的类型。。

class Abc 
  include Mongoid::Document
  field :value 
    def initialize(attrs = nil, options = nil)
      value_type = 'Monetary'
        self.value = eval(value_type).new attrs[:value]
        end
    end
end

加个高亮吧

这个场景 感觉很奇怪啊 怎么类型还需要根据参数来确定呢?

#2 楼 @TsingHan 是希望这个 filed 在不同的实例中根据当时的环境自动进行类型调整,这样在取出来时能够方便调用方法。。

匿名 #4 2013年02月20日

似乎mongoid的类型定义没啥效果,尽管我写了 field :value, :type => Integer 但是如果给value赋值 value = "ssdf2342" 最后保存也可成功,从数据库里取出来也是String类型

#4 楼 @lewisgrady 我用 scaffold 间了个 class,按照你的例子弄了下,当传入字符时得到的是 0。。因而 filed 还是有用的。而我是想要给定条件后生成我要的类型。。这样能够条用相应的类的方法。

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