및 slug
매개 변수가있는 Site
모델이 있습니다. 사용자가 Site
을 저장할 때마다 레일 앱에서 슬러그를 생성하고 싶지만 slug
은 고유해야합니다. 고유성을 보장하기 위해 유효성을 확인했습니다.레일스는 다른 필드를 기반으로 저장하기 전에 슬러그를 생성합니다.
내가 가진 도전은 사용자가 같은 이름의 두 번째 사이트를 만들 때 동일한 슬러그가 생성된다는 것입니다. 예 name = "Hello
및 name = "hElLo"
둘다
before_validation :create_slug
private
def create_slug
self.slug = self.name.parameterize
end
hello
제가 동일한 슬러그와 사이트가 존재하고 부가 "-1"슬러그 각 루프는 고유 때까지 여부 체크 while 루프를 추가하는 시도 생성한다. 문제는 내가 사이트를 업데이트하면 동일한 슬러그가있는 사이트가 존재하고 슬러그가 증가하는 것을 루프에서 볼 수 있지만 이미 존재하는 사이트는 동일한 사이트였습니다. 난 당신이 두 단계로 문제를 해결할 수 있다고 생각
def create_slug
a = self.name.parameterize
while Site.where(slug:a).count > 0 do
a = a + "-1"
end
self.slug = a
end
감사합니다 - 사용자가 "Hello"에서 "HeLLo"또는 그와 비슷한 이름을 변경하면 유일한 문제가 발생합니다. 이름은 바뀌었지만 슬러그는 그렇지 않았습니다. 나는 이름보다는 슬러그를 검증해야 할 것이라고 생각합니다. – Jack
나는 그것이 더 현명 할 것이라고 생각한다. – xlembouras