gpt4 book ai didi

mysql - update_all 与字符串连接

转载 作者:太空宇宙 更新时间:2023-11-03 17:16:14 27 4
gpt4 key购买 nike

我正在尝试为我的所有用户更新“allowed_ips”字段,但它没有像我预期的那样工作。

'allowed_ips' 是一个带有 ip 地址的字符串。

User.where(role: 1).update_all(:allowed_ips => ["CONCAT('allowed_ips', '192.168.0.1')"])

# output:
> user.allowed_ips
=> "CONCAT('allowed_ips', '192.168.0.1')"

我想要的是:

UPDATE 'users' SET 'allowed_ips' = CONCAT('allowed_ips', '192.168.0.1') WHERE 'role' = '1'
# output:
> user.allowed_ips
=> "127.0.0.1, 127.0.0.2, 192.168.0.1"

最佳答案

这应该可以解决问题:

User.where(role: 1).update_all(["allowed_ips = CONCAT(allowed_ips, ?)", '192.168.0.1'])

在您的情况下,“CONCAT...”被认为只是更新字段的字符串值。

顺便说一句,您可能还需要修复 CONCAT 调用本身,否则字符串将在没有分隔符的情况下粘在一起。

还要检查 serialize ( link ) 以在 ActiveRecord 模型属性中存储对象(例如数组)。这可能是获得您想要实现的目标的更简洁的方法

关于mysql - update_all 与字符串连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19181721/

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