在Rails应用程序中,我希望能够存储无架构的对象 - JSON数据结构,它可以在不同的对象之间具有不同的结构,或者在不同的时间对于同一个对象。
使用ElasticSearch我可以做到这一点。但是,我想对Rails使用某种ORM。
尝试使用Tire教程进行一些测试,在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)返回属性名称?
如果不是Tire,还有其他解决办法吗?
答案 0 :(得分:1)
不太确定你在这里做了什么,但是Tire确实附带了ActiveRecord集成的替代品,只是你班级的include Tire::Model::Persistence
。您还可以定义属性(使用映射,类型转换,默认值等):
class Article
include Tire::Model::Persistence
property :title
property :published_on, type: 'date'
property :tags, analyzer: 'keyword', default: []
end
Tire 自述文件和integration tests包含所有信息。
当然,您可以在content
属性内搜索 - 这只是正确映射的问题。
如果您遇到某些特定行为,请更新您的问题......