Mysql 查询数组字段中的where值

Mysql 查询数组字段中的where值,mysql,sql,ruby-on-rails,ruby-on-rails-5,Mysql,Sql,Ruby On Rails,Ruby On Rails 5,我在Rails 5的mysql数据库中有一个名为“User”的表 在该表中,有一个名为“professions”的数组字段 我想找到所有拥有包含值“writer”的专业数组的用户 我有以下记录: => #<User id: 39806, email: "user@gmail.com", professions: {"model"=>nil, "writer"=>nil, "graphic_producer"=>nil}> 您需要序列化查询以使其工作您需要序列

我在Rails 5的mysql数据库中有一个名为“User”的表

在该表中,有一个名为“professions”的数组字段

我想找到所有拥有包含值“writer”的专业数组的用户

我有以下记录:

=> #<User id: 39806, email: "user@gmail.com", professions: {"model"=>nil, "writer"=>nil, "graphic_producer"=>nil}>

您需要序列化查询以使其工作

您需要序列化查询以使其工作

如何存储该数组?MySQL支持数组列吗?你在使用JSON吗?可能
序列化
?@muistooshort该字段为文本类型。没有JsonSo您在model类中使用
序列化
将YAML存储在文本列中?您能更改模式吗?@muistooshort用户模型中有一个序列化:professions。更改模式?你的意思是改变字段的类型吗?我没有使用mysql,但是如果你的列是文本,你会尝试这个
User.where(“像这样的职业?”,“%#{search\u params}%”
search\u params在你的例子中可以是
“writer'=>
,但您需要检查“专业”列。您如何存储该数组?MySQL支持数组列吗?你在使用JSON吗?可能
序列化
?@muistooshort该字段为文本类型。没有JsonSo您在model类中使用
序列化
将YAML存储在文本列中?您能更改模式吗?@muistooshort用户模型中有一个序列化:professions。更改模式?你的意思是改变字段的类型吗?我没有使用mysql,但是如果你的列是文本,你会尝试这个
用户吗。在哪里(“像什么职业?”,“%{search\u params}%”
搜索参数在你的情况下可以是
“writer”=>
,但是你需要检查职业列。
1)User.where("['writer'] = ANY (user.professions)")

2)User.where(:professions.in =>['writer'] )