Ruby on rails 友好的id,检查两个型号/表格中是否存在SLUG

Ruby on rails 友好的id,检查两个型号/表格中是否存在SLUG,ruby-on-rails,friendly-id,Ruby On Rails,Friendly Id,想象一下下面的路线: get ':slug/:location' 其中:搜索根据提供的slug在两种不同型号(即Businnes、Person)上触发finder 我目前面临的问题是,我找不到一种方法来检查两个不同的模型是否存在slug,同时生成一个新的slug tl;博士: 我试图避免两个不同的模型使用相同的slug 非常感谢您的帮助。您要做的是在您的每个模型中运行一个自定义验证器,该验证器将应用于您的业务模型中,例如: before_save :unique_slug private

想象一下下面的路线:

get ':slug/:location'  
其中:搜索根据提供的slug在两种不同型号(即Businnes、Person)上触发finder

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

tl;博士: 我试图避免两个不同的模型使用相同的slug


非常感谢您的帮助。

您要做的是在您的每个模型中运行一个自定义验证器,该验证器将应用于您的业务模型中,例如:

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的行为就不是这样了(我并不是这么想的)。我希望friendly id只生成一个新的id(即通过附加uuid)。在这种情况下,您可以让它将id设置为其他id。如果出现错误,我将更新我的答案,让它这样做。