0

在 Rails 应用程序中,我希望能够存储无模式对象——JSON 数据结构,它可以在对象之间具有不同的结构,或者在不同时间对于相同的对象。

使用 ElasticSearch,我可以做到这一点。但是,我想为此使用某种带有 Rails 的 ORM。

尝试使用轮胎教程进行一些测试,在 Rails 控制台中执行此操作:

>>> c = Article.new :title =>'New article', :content => { :a => 'a', :b => 'b'}

我可以看到存储为序列化 YAML 的内容数据:

>> Article.last.content
=> "---\n:a: a\n:b: b\n"

这将需要将搜索结果解析为 JSON,这不是问题。但主要问题是:我能否在序列化数据中进行搜索?有没有办法从任意结构化数据(如 Object.keys)中返回属性名称?

如果不是轮胎,是否有其他解决方案可以做到这一点?

4

1 回答 1

1

不太确定你在这里做什么,但轮胎确实include Tire::Model::Persistence在你的课堂上提供了一个替代 ActiveRecord 集成的插件。您还可以定义属性(使用映射、类型转换、默认值等):

class Article

  include Tire::Model::Persistence

  property :title
  property :published_on, type: 'date'
  property :tags,         analyzer: 'keyword', default: []

end

轮胎自述文件和集成测试包含所有信息。

当然,您可以在content属性内部进行搜索——这只是正确映射的问题。

如果您有某些特定行为,请更新您的问题...

于 2012-07-23T11:25:28.510 回答