如何更新Rails Minitest中的fixture列

时间:2016-03-18 07:18:45

标签: 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_column(---,----)?

2 个答案:

答案 0 :(得分:4)

name = names(:one)
name.update_attributes(role_id: roles(:one).id)

答案 1 :(得分:2)

感谢@richfisher的回答,稍后我想出另一种方法。 update_attributes 不适合在测试中使用,因为 update_attributes 的问题是

  • It runs callbacks and validations 通常我们不想在测试用例中运行这些东西

我们可以使用 update_column 代替update_attributes

name.update_column(:role_id, roles(:one).id)

使用 update_column 优势

  • It did not run callbacks and validations