代码之家  ›  专栏  ›  技术社区  ›  hurikhan77

运行时错误:声明attr_protected或attr_accessible for user,但不能同时声明两者

  •  3
  • hurikhan77  · 技术社区  · 16 年前

    由于时间很短,我的Rails应用程序在测试套件中会产生以下运行时错误:

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

    这可能是由restful_身份验证的更新引入的。但是扫描“attr_protected”的代码只会显示它从未被调用过。为什么会出现这个错误消息?

    我的用户模型只有以下代码:

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

    所以应该很好?有什么线索可以找到问题所在吗?搜索google会发现一些笨手笨脚的人,他们只在测试环境中看到这个问题,偶尔在开发环境中也会看到这个问题。

    3 回复  |  直到 16 年前
        1
  •  6
  •   clarif    14 年前

    如果您使用的是带有友好\u id的restfulauthentication,则友好\u id的最新版本可能会导致此错误,如Github页面上所示:

    此外,此功能使用attr_protected来保护缓存的_slug列,除非您已经调用了attr_accessible。因此,如果您希望使用attr_accessible,则必须在调用类中具有\u friendly_id之前调用它。 github page

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

        2
  •  0
  •   P Shved    16 年前

    你可能有 include D模块到 User 声明的类 attr_protected . 也许某种测试功能可以做到这一点。

        3
  •  0
  •   Sam Soffes Jolly Roger    16 年前

    这可能是由于插件添加 attr_protected . This 可能会有所帮助。