2013-04-11 1 views
1

관련 레코드가 업데이트 될 때 모델에 슬러그를 생성해야한다면 어떻게해야합니까? 예를 들어, User 및 UserProfile 모델을 사용 중이며 slug는 user.user_profile.name입니다. 새 사용자가 작성되면 연관된 user_profile도 저장됩니다. 새 사용자 레코드에 대해 슬러그가 생성됩니다. 그러나 user_profile을 업데이트 할 때 이름이 변경되면 슬러그는 업데이트되지 않습니다. 도와주세요.friendly_id 관련 모델 필드를 사용하는 보석

답변

0

should_generate_new_friendly_id? 메서드를 재정의 할 수 있습니다. 이렇게하면 새 슬러그가 생성되는 시점을 제어 할 수 있습니다.

당신은 friendly_id의 최신 버전에서이

class User < ActiveRecord::Base 
    extend FriendlyId 
    friendly_id :my_friendly_id_method, :use => :slugged 

    def should_generate_new_friendly_id? 
    user_profile.changed? 
    end 
end 
1

같은 것을 할 수있는, 당신은 슬러그를 다시 생성 할 때 (이것은 아마도 아니지만 당신이 필요)를 지정하는 방법을 정의 할 수 있습니다 :

if name_changed? 
    user.slug = nil 
    user.save 
end 
:
def should_generate_new_friendly_id? 
    name_changed? || super 
    end 
당신은 전무하고 힘 슬러그을 설정 USERPROFILE 클래스 상에 저장 후 콜백을 사용할 수

은 슬러그를 다시 생성 friendly_id

문서에 따라 처리해야합니다. http://norman.github.io/friendly_id/