【问题标题】:friendly-id, checking two models/tables for existing slugs友好的 id,检查两个模型/表格中的现有 slug
【发布时间】:2013-10-25 23:41:03
【问题描述】:

想象以下路线:

get ':slug/:location'  

其中 :search 会根据提供的 slug 在两个不同的模型(即 Businnes、Person)上触发查找器。

我目前面临的问题是,我无法找到一种方法来检查两个不同模型的现有 slug,同时生成一个新的。

tl;博士: 我试图避免两种不同的模型被赋予相同的蛞蝓的情况。

任何帮助表示赞赏。

【问题讨论】:

    标签: ruby-on-rails friendly-id


    【解决方案1】:

    您想要做的是在您的每个模型中运行一个自定义验证器,这个将进入您的业务模型,例如:

    before_save :unique_slug
    
    private
    
    def unique_slug
      self.slug = self.name + "-" + self.id unless
        self.find_by_slug(:slug).blank? and Person.find_by_slug(:slug).blank?
      end
    end
    

    【讨论】:

    • 是的,但是当它找到一个已经存在的 slug 时,友好 ID 的行为并不是这样的(这并不是我的想法)。我希望友好 id 只生成一个新的(即通过附加 uuid)。
    • 在这种情况下,如果发生错误,您可以让它将 ID 设置为其他值,我会更新我的答案让它这样做。
    猜你喜欢
    • 2016-05-15
    • 2016-11-21
    • 2016-04-16
    • 1970-01-01
    • 1970-01-01
    • 2013-07-19
    • 2016-08-17
    • 2014-02-18
    • 1970-01-01
    相关资源
    最近更新 更多