gpt4 book ai didi

ruby-on-rails - 如何拥有可维护的用户名黑名单

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

我的应用程序是一个社交平台,我希望支持团队能够维护昵称黑名单。因此,我有一个包含不同名称的模型黑名单。

现在我尝试使用 validates_exclusion_of 将它们映射到 in: 但它引发了以下错误,

wrong number of arguments (given 1, expected 0)

validates_exclusion_of :nickname, in: -> { 
where(Blacklist.select(:name).map(&:name).uniq.to_s)
}, message: "This nickname is not allowed"

最佳答案

您不需要将要排除的值包装在 lambda 中,如果您只传递 Blacklist AR 查询结果,它将按原样工作。

validates_exclusion_of :nickname,
in: Blacklist.select(:name).map(&:name).uniq.to_s,
message: 'This nickname is not allowed'

注意,您可以使用 ActiveRecord::Calculations#pluck为了只从黑名单中获取名称,摆脱选择和映射组合,并使用 ActiveRecord::QueryMethod#distinct获取非重复值。

这样你就不需要 uniqto_s 这一步了。最后一个,因为验证正在等待可枚举对象,而您将传递一个字符串。

类似于:

validates_exclusion_of :nickname,
in: Blacklist.distinct.pluck(:name),
message: 'This nickname is not allowed'

您在验证中使用的 where 将不起作用,因为它应用 WHERE 语句而不传递要检查的列名,因此您将获得一个 ActiveRecord::语句无效

关于ruby-on-rails - 如何拥有可维护的用户名黑名单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54391432/

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