Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 如何在Rails Minitest中更新fixture列_Ruby On Rails 4_Testing_Minitest_Fixtures - Fatal编程技术网

Ruby on rails 4 如何在Rails Minitest中更新fixture列

Ruby on rails 4 如何在Rails Minitest中更新fixture列,ruby-on-rails-4,testing,minitest,fixtures,Ruby On Rails 4,Testing,Minitest,Fixtures,如何仅使用update_column命令更新临时使用的夹具列。 现在,我有以下运行良好的命令: name = names(:one) role = roles(:one) name.role_id = role.id assert name.save 而且运行良好,但是有没有什么有效的方法可以在一行中完成,比如name.update\u column(--,------)谢谢@richfisher的回答,稍后我会想出另一种方法update\u attributes在测试

如何仅使用update_column命令更新临时使用的夹具列。 现在,我有以下运行良好的命令:

name = names(:one)
    role = roles(:one)
    name.role_id = role.id
    assert name.save

而且运行良好,但是有没有什么有效的方法可以在一行中完成,比如name.update\u column(--,------)谢谢@richfisher的回答,稍后我会想出另一种方法
update\u attributes
在测试中使用不是一个好主意,因为update\u attributes的问题是

name = names(:one)
name.update_attributes(role_id: roles(:one).id)
  • 它运行回调和验证
    通常我们不想在测试用例中运行这些东西
我们可以像这样使用update\u列,而不是update\u属性

name.update_column(:role_id, roles(:one).id)
使用更新列的优点是

  • 它没有运行回调和验证

    • 谢谢@richfisher的回答,稍后我会想出另一种方法
      update\u attributes
      在测试中使用不是一个好主意,因为update\u attributes的问题是

      • 它运行回调和验证
        通常我们不想在测试用例中运行这些东西
      我们可以像这样使用update\u列,而不是update\u属性

      name.update_column(:role_id, roles(:one).id)
      
      使用更新列的优点是

      • 它没有运行回调和验证

      请添加一些解释。您的答案当前被标记为“低质量”,可能最终会被删除而不显示。请添加一些解释。您的答案当前被标记为“低质量”,最终可能会被删除,而不会删除。缺点(有时)是它不会运行回调或更新。使用update_列保存无效记录是可能的,在某些情况下,这可能会导致虚假的测试结果。缺点(有时)是它不会运行回调或更新。可以使用update_列保存无效记录,在某些情况下,这可能会导致虚假的测试结果。