2013-10-07 5 views
0

에서 레일, 나는 방법에 내장 된 대체 create_new! 같은 방법을 사용자 정의 모델을 많이 사용 그들에게 비공개와 같은 특정 방법을 사용하지 않도록 설정 (일반적으로 필터를 사용하지 않고 추가 기능을 래핑 할 나는 피하려고 노력하고있다).액티브 '저장'또는

이 때문에 나는 create 또는 save과 같은 몇 가지 방법을 비활성화 (또는보다 우아하게 사적으로)하고 싶습니다. 어떤 불쾌한 부작용없이 일부 메소드를 비공개로 만들 가능성이 있습니까?

+0

키워드 개인 및 보호는 어떻습니까? – Neeraj

+0

물론이 방법을 무시하는 것이 원하지 않는 부작용없이 이루어 지는지 확신 할 수 없습니다. – Remo

+0

HTTP 동사와 URL 패턴에 따라이 메소드는 자동으로 호출됩니다. 새 메소드는 GET/new, 편집은 GET/id/edit, 삭제는 DELETE, 업데이트는 PUT 등입니다. 따라서 이러한 메소드는 사용 가능하고 공개됩니다. 이러한 메서드에서 호출 된 사용자 지정 개인 메서드 shudb. 특정 작업에서 특정 사용자를 제한하려면 before_filter : authenticate_admin : except => [: show]와 같은 사용자 정의 비공개 기능을 사용하십시오. 필터가 없으면 u는 조건부 확인을 할 수 있지만 그다지 좋지는 않습니다. U는 필터 기능 이전에 하나만 사용하여 모든 검사를 수행 할 수도 있습니다. – Neeraj

답변

0

당신은 당신이 당황하고 오류 또는 예외를 던질 수있는 방법을 재정의하고 싶은 방법을 바꾸려면 alias_method 기능을 사용할 수 있습니다. 예를 들어,

alias_method :save_private, :save 

def save(*) 
    ActiveSupport::Deprecation.warn("Method is deprecated and disabled, please use save_new") 
    false 
end 
+0

그 후, 실제로 save_private 메소드를 사용하여 객체를 저장하는 방법은 무엇입니까? – juliangonzalez