2016-03-03 49 views
8

我知道在rails中我们可以使用文本数据类型作为mysql中的列,我们想要保存哈希或者数组到它,其中rails以yaml格式序列化哈希并保存它在列中。是否rails支持mysql json数据类型

class A < ActiveRecord::Base 
    serialize :data, Hash 
end 

但是如果我需要在此列执行一些搜索,我要加载所有的记录和反序列化所有散列值,并且使用Ruby的哈希值进行搜索。那么有没有办法告诉mysql在哈希中搜索并返回匹配的记录?我认为这不支持正常的yaml序列化,因为它只是一个文本,所以rails支持mysql json数据类型或任何其他解决方案来解决这个问题?

回答

5

它看起来像Rails 5本应支持MySQL JSON数据类型。这里有一个拉动请求#21110,它描述了一下。

它看起来像你就可以把它添加到您的create_tablechange_table

create_table :json_data_type do |t| 
    t.json :settings 
end 
+0

如何Rails的4.2.x版? – Tilo

+1

看起来它不在4.2中:https://github.com/rails/rails/pull/21110#issuecomment-166488468 – jlongtine