由于我的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
所以它应该完全没问题?有什么线索在哪里寻找问题?搜索谷歌显示了一些无知的人,他们也只在测试环境中看到这个问题,偶尔也会在开发环境中看到这个问题。
答案 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_protected
。 This可能会有所帮助。