【发布时间】:2014-06-14 10:12:43
【问题描述】:
我有一个带有name 和slug 参数的Site 模型。我希望 Rails 应用程序在每次用户保存 Site 时生成 slug,但希望 slug 是唯一的。我有一个验证来确保唯一性。
我面临的挑战是,当用户创建具有相同名称的第二个站点时,会生成相同的 slug。例如name = "Hello 和name = "hElLo" 都生成hello
before_validation :create_slug
private
def create_slug
self.slug = self.name.parameterize
end
我尝试添加一个 while 循环来检查是否存在具有相同 slug 的站点,并在每个循环中添加“-1”到 slug 直到它是唯一的。问题是,如果我更新了一个站点,循环会看到存在具有相同 slug 的站点,并增加 slug,但已经存在的站点是同一个站点。
这是我使用的代码:
def create_slug
a = self.name.parameterize
while Site.where(slug:a).count > 0 do
a = a + "-1"
end
self.slug = a
end
【问题讨论】:
标签: ruby-on-rails slug