首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将ActiveSupport::TimeWithZone类转换为字符串"ActiveSupport::TimeWithZone“

将ActiveSupport::TimeWithZone类转换为字符串"ActiveSupport::TimeWithZone“
EN

Stack Overflow用户
提问于 2014-12-10 20:22:02
回答 1查看 2.6K关注 0票数 1

好的,我这里有一个非常吸引人的元编程问题。

我正在尝试检查一个对象的类在ruby中是什么,所以我有一个如下所示的方法:

代码语言:javascript
运行
复制
attri = "created_at"

def convert_value_dataype(object)
  klass = object.send(attri.to_sym).class.to_s
  case klass
  when "String"
    return get_attri(object)
  when "NilClass"
    return nil
  when "Fixnum"
    return get_attri(object).to_i
  when "ActiveSupport::TimeWithZone" || "DateTime"
    return DateTime.parse(get_attri(object))
  when "TrueClass"
    return true
  when "FalseClass"
    return false
  when "Float"
    return get_attri(object).to_f
  else
    raise "Unkown dataype: #{klass}"
  end
end

有趣的是,当我所看到的属性是Fixnum或一些简单的东西时,这是可行的。但是当我运行代码: TypeError:没有将ActiveSupport::TimeWithZone隐式转换为String时,就会得到这个错误。

但是,当我在控制台中运行这个命令时,我可以输入user.send("created_at".to_sym).class.to_s,并得到正确的输出。当我使用控制台(pry)时,有什么特别的东西在我运行应用程序时没有被导入?

我也可以把'binding.pry‘写在"klass =.“线上。然后调用确切的行,它在pry控制台中工作,但是一旦我退出pry控制台,它就会出错。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-10 20:28:27

不介意,我解决了我的问题。这个错误发生在行return DateTime.parse(get_attri(object))中,因为我试图将ActiveSupport::TimeWithZone对象解析为一个DateTime。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27410119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档