gpt4 book ai didi

ruby-on-rails - Ransack 与数组值完全匹配

转载 作者:数据小太阳 更新时间:2023-10-29 06:41:51 26 4
gpt4 key购买 nike

我必须使用 ransack 对数据库进行搜索。数据库中的一些列将数据存储在序列化数组中。我想将存储在数组中的确切数据与用户发送的数据进行匹配以执行搜索(用户的数据也是数组)。例如,在数据库中,一列数据为(c1c2是测试用例):

c1.column_data = [1, 2, 3, 4, 5]
c2.column_data = []

用户搜索数据(t1t2t3为测试用例):

t1.user_data = [1]
t2.user_data = [1, 3]
t3.user_data = [1, 2, 3, 4, 5]
t4.user_data = []
  • 对于 c1t1, t2, t4 的情况,它应该返回 no match found
  • 对于t3,结果应该是找到匹配项
  • 对于 c2t1, t2, t3 的情况,它应该返回 no match found
  • 对于 t4,它返回“找到匹配项”。

我找到了 postgres_ext gem ,但我无法让它工作。任何人都可以建议我如何做到这一点或建议任何替代方法来进行这样的搜索吗?也欢迎任何替代解决方案。

最佳答案

我在回答我自己的问题。

它可能会因要求而异。

如果有任何确切的数据匹配,我必须获取用户参数并在数据库中搜索,然后将用户放在同一组中,否则使用搜索到的数据创建一个新组,最后还为各个用户保存每个搜索到的数据。

由于所有字段都是多选下拉复选框等所有参数都以字符串数组的形式出现。

我的问题解决方法:1. 对数组参数进行排序并用逗号连接起来并生成字符串。例如:

    a = [1,2,3,4,5,6]
a.sort.join(',')
"1,2,3,4,5,6"

我将这个字符串存储在文本的数据库列中。不,当用户搜索一个组时,我获取它的参数并将其再次转换为逗号分隔的字符串,并使用 where 子句查询数据库。

在 UI 中,我再次将此字符串转换为数组并将其显示给用户。

我不知道这样做是否正确,但它对我有用。

仍然欢迎任何好的解决方案。

关于ruby-on-rails - Ransack 与数组值完全匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49274211/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com