我知道在rails中我们可以为mysql中的列使用文本数据类型,我们希望将哈希值或数组保存到其中,其中rails以yaml格式序列化哈希并将其保存在列中。
class A < ActiveRecord::Base
serialize :data, Hash
end
但是如果我需要在这个列上执行一些搜索,我必须加载所有记录并对所有哈希进行反序列化,并使用ruby在哈希中搜索。那么有没有办法告诉mysql在哈希中搜索并返回匹配的记录?我认为普通的yaml序列化不支持这个,因为它只是一个文本,rails是否支持mysql json数据类型或任何其他解决此问题的方法?
答案 0 :(得分:6)
看起来Rails 5本身应该支持MySQL JSON数据类型。这里有一个拉取请求#21110,它描述了一下。
看起来您可以将其添加到create_table
或change_table
:
create_table :json_data_type do |t|
t.json :settings
end