代码之家  ›  专栏  ›  技术社区  ›  collimarco

Ruby on Rails中的编组与ActiveRecord序列化

  •  8
  • collimarco  · 技术社区  · 17 年前

    编组和ActiveRecord序列化有什么区别?

    在某些特定情况下,使用一个对象而不是另一个对象将对象保存到数据库中更可取吗?

    2 回复  |  直到 17 年前
        1
  •  10
  •   Olly    17 年前

    IIRC:

    RubyMarshall不能保证在不同的Ruby版本或不同平台上的相同Ruby版本之间工作。

    因为您可能有不同的Ruby版本访问同一个序列化列,所以Rails使用yaml实现了它的序列化。虽然速度较慢,但它确实保证了您的序列化列可以被其他Ruby版本、其他OSS上的Ruby以及其他编程语言读取。

        2
  •  4
  •   tadman    17 年前

    marhshalling和serializing都是描述相同基本原理的通用术语。根据定义,任何能够将对象及其从属子结构编码为可以保存的内容的过程,在以后的某个时间点上可以恢复的过程称为序列化或编组。

    在维基百科的条目中,有一些关于这些术语如何不同的解释,但通常是相同的: http://en.wikipedia.org/wiki/Marshalling_(computer_science)#Comparison_with_serialization

    Ruby的具体区别在于,内置模块marshal可用于任何应用程序,而ActiveRecord序列化支持则特定于Rails平台。

    由于ActiveRecord有自己的紧密集成的序列化方法,因此通常最好使用它。

    推荐文章