2013-01-09 2 views
1

우선 나는 그 문제에 대해 레일과 루비에 매우 익숙하다.슬러그 두 값을 기반으로

맞춤 URL 용 슬러그를 만들려고합니다.

저는 first_name이 & last_name 인 사용자 모델이 있습니다. 이 모델에는 슬러그도 있습니다.

내가하려는 것은 예를 들어 생성 될 슬러그의 인스턴스가 있는지 내 데이터베이스를 검사하도록하는 것입니다. 얼마나 많은 조 블로그가 있는지보십시오. 아무도가없는 경우는 URL을 whatever.com/joe-blogs를 얻을 수 이상 0 내가 할 시도한 횟수 whatever.com/joe-blogs-COUNT

의 값이 취득하는 경우 내 슬러그를 괴롭힐 때

def generate_slug 
    NoSlug == Users.sum("slug").where(:slug => first_name-last_name.perameterize) 
     if NoSlug == 0 
     self.slug ||= first_name-last_name.perameterize 
     else NoSlug > 0 
     self.slug ||= first_name-last_name-NoSlug.perameterize 
     end 
    end 

나는 그것을 고치려고했지만 어떤 행운도없이 - 어떤 제안이나 조언?

감사합니다.

답변

6

나는 FriendlyId gem을 사용하고있어 기뻤습니다. 이름과 성을 결합하려면 다음과 같이 할 수 있습니다.

class User < ActiveRecord::Base 
    extend FriendlyId 
    friendly_id :full_name, use: :slugged 

    def full_name 
    "#{first_name} #{last_name}" 
    end 
end 

보석이 매개 변수화를 처리합니다. This RailsCast도 도움이 될 수 있습니다. generate_slug

데프 = 자기
이 "# {FIRST_NAME} # {LAST_NAME}"

데프
self.slug을 generate_slug 이름 :

0

before_validation 모델에서 이러한 방법을 쓰기 (/ [^ a-zA-Z0-9 _] + /, '')