RuntimeError:为User声明attr_protected或attr_accessible,但不是两者都声明

时间:2009-11-08 12:41:58

标签: ruby-on-rails unit-testing restful-authentication

由于我的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

所以它应该完全没问题?有什么线索在哪里寻找问题?搜索谷歌显示了一些无知的人,他们也只在测试环境中看到这个问题,偶尔也会在开发环境中看到这个问题。

3 个答案:

答案 0 :(得分:6)

如果您正在使用friendly_id使用RestfulAuthentication,那么最新版本的friendly_id可能会在github页面上显示此错误:

  

此外,此功能使用attr_protected来保护cached_slug列,除非您已经调用了attr_accessible。因此,如果您希望使用attr_accessible,则必须在调用类中的has_friendly_id之前调用它。   github page

另外,当使用grep查找关键字出现时,不要忘记在gems中使用grep,因为你可能已经安装了一些插件作为gem archive。

答案 1 :(得分:0)

您可能在include类中有User个模块,声明attr_protected。也许某种测试功能可以做到这一点。

答案 2 :(得分:0)

这可能是因为插件添加了attr_protectedThis可能会有所帮助。