如何验证唯一性,然后在失败时提出独特的替代方案

发布于 2024-11-19 10:13:44 字数 116 浏览 2 评论 0原文

我想根据标题字段创建 slugs,因此这些 slugs 必须是唯一的。

当 validates_uniqueness_of 失败时是否有回调方法,以便我可以将一个字符附加到 slug 的末尾以使其唯一?

I want to create slugs based on a title field, so those slugs will have to be unique.

Is there a callback method for when validates_uniqueness_of fails so that i can append a character to the end of the slug to make it unique?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

那片花海 2024-11-26 10:13:44

听起来这作为 before_create 回调比验证更好。如果名字是假的,那么它实际上并不是无效的;你只需要唯一化它。

Sounds like this would be better as a before_create callback than a validation. It's not actually invalid if the name's a dupe; you just need to uniquify it.

べ映画 2024-11-26 10:13:44

您不必使用 validates_uniqueness_of,您始终可以自己执行此操作,然后自定义消息。例如:

validate :field_uniqueness

private
def field_uniqueness
    if self.exists?(:conditions => {:username => self.username})
        errors.add(:username, :name_taken, :username => "#{self.username}1")
    end
end

如果用户名已被使用,则建议用户名末尾附加“1”。

You don't have to use validates_uniqueness_of, you can always do it yourself and then customize the message. For example:

validate :field_uniqueness

private
def field_uniqueness
    if self.exists?(:conditions => {:username => self.username})
        errors.add(:username, :name_taken, :username => "#{self.username}1")
    end
end

If username is already taken, suggest the username with "1" appended to the end of it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文