3

しばらくの間、Rails アプリケーションのテスト スイートで次のランタイム エラーが発生しました。

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 で検索すると、この問題がテスト環境でのみ発生し、開発環境で散発的に発生する無知な人が何人かいます。

4

3 に答える 3

6

Friendly_id で RestfulAuthentication を使用している場合、Friendly_id の最新バージョンでは、github ページに示されているように、このエラーが発生する可能性があります。

また、attr_accessible を呼び出していない限り、この機能は attr_protected を使用して cached_slug 列を保護します。したがって、attr_accessible を使用する場合は、クラスで has_friendly_id を呼び出す前にそれを呼び出す必要があります。 github ページ

また、grep を使用してキーワードの出現箇所を見つける場合は、gem アーカイブとしていくつかのプラグインをインストールしている可能性があるため、gem でも grep することを忘れないでください。

于 2010-01-05T14:08:27.760 に答える
0

を宣言するクラスincludeに d モジュールがある場合があります。おそらく、ある種のテスト機能がそれを行います。Userattr_protected

于 2009-11-08T12:50:05.817 に答える
0

これは、プラグインの追加が原因である可能性がありますattr_protectedこれは役立つかもしれません。

于 2009-11-08T22:11:44.130 に答える