【问题标题】:How to validate uniqueness then suggest a unique alternative on fail如何验证唯一性,然后在失败时建议一个独特的替代方案
【发布时间】:2011-10-02 03:35:11
【问题描述】:

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

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

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 slug


    【解决方案1】:

    听起来像这样的 before_create 回调比验证更好。如果名字是骗子,它实际上并不是无效的;你只需要统一它。

    【讨论】:

    • 所以我必须检查该 slug 是否存在,然后更改 before_create 方法中的参数?
    【解决方案2】:

    您不必使用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”。

    【讨论】:

    • 而不是输入 1,是否可以检查重复用户的计数并添加 1。所以用户名的正则表达式忽略附加的数字。它也适用于蛞蝓,所以它基于标题,因此在这种情况下,蛞蝓将具有附加数字,所以我想我可以计算具有相同标题的帖子。
    • 假设相同的标题 = 相同的 slug,您必须计算标题的数量,然后如果计数 > 0,则附加计数 + 1。
    猜你喜欢
    • 2017-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-29
    • 1970-01-01
    • 2019-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多