我尝试将哈希对象添加到我的表中的列。但是我无法进行能够找到值的正确数据库查询。
model.rb 中的
serialize :options, Hash
options
属性
options: {:price=>"20000", :room=>"1", :area=>"40", :floor=>"3", :metro=>"Parnas", :district=>"North-West"},
如何使正确的数据库查询找到值?
抱歉我的英文不好
答案 0 :(得分:0)
序列化字段只是数据库中的YAML(默认情况下)字符串。因此,您无法以常规方式进行搜索。你能做的是:
def relevant? opts
opts.price == 2000 && opts.room == 1
end
Model.where(...).select { |m| relevant? m.options }
Model.where('options = ?', {price: 123, room: 1, ...}.to_yaml)
LIKE
。Model.where('options LIKE ? AND options LIKE ?', 'price: 2000', 'room: 4')
所有这些方式都是有限的,在任何意义上都不是最佳的。我建议你不要在要查询的字段上使用序列化。