2009-11-08 3 views
3

내 레일 응용 프로그램은 테스트 스위트에서 다음과 같은 런타임 오류를 얻을 수 짧은 시간 가입일 :RuntimeError에 : 선언 attr_protected 또는 사용자에 대한 attr_accessible하지만 하나 둘

RuntimeError: Declare either attr_protected or attr_accessible for User, but not both. 

이 아마 restful_authentication에 대한 업데이트에 의해 소개되었다. 그러나 "attr_protected"에 대한 코드를 스캔하면 절대로 호출되지 않습니다. 그렇다면이 오류 메시지는 왜 발생합니까?

attr_accessible :login, :email, :name, :password, :password_confirmation, :identity_url 

그래서 완벽하게 괜찮을한다 :

내 사용자 모델은 다음과 같은 코드가? 문제를 찾을 수있는 단서가 있습니까? Google 검색에서는 테스트 환경에서만이 문제를보고 개발 환경에서 산발적으로 발생하는 단서없는 사람들을 보여줍니다.

+0

최근에 다른 플러그인을 추가 했습니까? 이것은 restful_authentication과 관련된 문제는 아니라고 생각하지만, 최근에 포함 된 다른 코드 조각 일 수도 있습니다. –

+1

'protected_attributes'에 대해서도 grep을해야한다. grep은 그것들이 저장되어있는 클래스 접근 자이므로'User.protected_attributes'가 nil이 아닌 경우이 에러가 발생한다. 어떤 종류의 테스트 프레임 워크를 사용하고 있습니까? 아마 모의 사용자와 관련된 문제일까요? 이 문제는 단위 테스트, 기능 테스트 중 또는 둘 다에서 발생합니까? – mckeed

답변

6

당신이 friendly_id와 RestfulAuthentication를 사용하는 경우 GitHub의 페이지에 표시된대로, friendly_id의 최신 버전이 오류를 가져올 수 : 키워드의 발행 수를 찾을 수 GREP을 사용하는 경우

또한

Also, this feature uses attr_protected to protect the cached_slug column, unless you have already invoked attr_accessible. So if you wish to use attr_accessible, you must invoke it BEFORE you invoke has_friendly_id in your class. github page

, 잊지 마세요 보석 보관소로 일부 플러그인을 설치했을 수도 있기 때문에 보석에서도 grep 할 수 있습니다.

+0

이것은 실제로 대답입니다! – hurikhan77

+0

그게 다야! 감사! – shedd

0

attr_protected을 선언하는 User 클래스에는 모듈이 include 개있을 수 있습니다. 어쩌면 어떤 종류의 테스트 기능이 그렇게 할 것입니다.

+0

"attr_protected"에 대한 전체 소스 트리를 그렸다. 아무 것도 (최소한 사용자 모델과 관련된 아무데도). – hurikhan77

0

attr_protected을 추가하는 플러그인 때문일 수 있습니다. This이 도움이 될 수 있습니다.

+0

실제로 플러그인은 내 사용자 모델에 attr_protected를 추가했습니다 (AuthLogic을 사용하여 RA를 덤프 할 예정이므로 RestfulAuthentication 자체는 추적했지만 더 자세히 살펴보기는 어렵습니다). – hurikhan77

관련 문제