【问题标题】:I don't know how to keep it dirty ('it' is an ActiveRecord model btw)我不知道如何让它变脏(“它”是一个 ActiveRecord 模型顺便说一句)
【发布时间】:2013-09-17 19:24:50
【问题描述】:

看看这个:

  it "should not be this tough" do
    was = obj.association_id
    expect(obj.association_id).to eq 1
    obj.association_id = 2 * was
    expect(obj.association_id).to eq 2
    expect(obj.association_id_changed?).to be_true
    expect(obj.association_id_was).to be_present
  end

最后的期望失败了。这是为什么?如果我在控制台中执行相同的步骤,它会按预期工作。

【问题讨论】:

    标签: ruby-on-rails activerecord activemodel


    【解决方案1】:

    attribute_was 方法将查找属性最后一次持久化时的值。如果您没有持久化该属性,如果您运行.present? 或期望它返回be_present,它将返回false

    因此,在您的情况下,我假设您只是在一个仅被实例化但未保存的对象上编写期望值,或者您已使用 association_id 的空值或 nil 值保存了该对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-07
      • 2018-10-17
      • 1970-01-01
      • 2022-08-18
      • 2021-11-14
      • 1970-01-01
      • 2021-12-31
      相关资源
      最近更新 更多