强参数会在测试中提高“堆栈级别太深”

时间:2013-11-02 20:24:16

标签: ruby-on-rails strong-parameters

我正在将我的rails 3.2应用程序从默认质量分配保护移动到强参数。我在application.rb中禁用了* whitelist_attributes *,并在我的模型中添加了必需的include语句。

在我的控制器中,我在创建模型时允许正确的属性。

def create
  @user = User.new user_params
  ...
end

protected
def user_params
  params.require(:user).permit(:email, :name, :locale, :password, :password_confirmation)
end

这在开发和生产中都很好。但由于某种原因,在我的测试环境中,它会破裂。我使用功能测试来创建一个带有哈希的简单帖子的创建动作。我在上面的代码片段的第二行得到了“堆栈级太深”。

  1) Error:
test_should_get_create(UsersControllerTest):
SystemStackError: stack level too deep
    /home/martijn/.rvm/gems/ruby-1.9.3-p448/gems/activesupport-3.2.15/lib/active_support/notifications/instrumenter.rb:23

这不仅发生在我的控制器中。当我在模型或测试代码中调用update_attributes等函数时,也会发生这种情况。但在开发中它运作良好。

当我删除 include ActiveModel :: ForbiddenAttributesProtection 时,它也有效。

有什么想法吗?

0 个答案:

没有答案