这是由attr_accessible引起的吗?

时间:2011-04-17 20:12:02

标签: ruby-on-rails rspec attr-accessible

我最近刚用attr_accessible字段更新我的模型,突然有些测试无法正常工作,正如我所料。但是,我的规格如下:

context "when user buys a game item" do
  let(:inventory) {@user.inventory << Factory(:inventory)}

  it "should present an error if the id ..." do
    GameItem.stub(:find_by_id).and_return(Factory(:game_item))
    @user.inventory.should == 1  # TEST
    post :buy, :id => (game_item.id + 1)
    flash[:error].should == I18n.t('error.invalid_post')
    response.should redirect_to melee_url('Weapon')
  end
end

@user.inventory.should == 1行只是我现在制作的支票。由于某种原因,广告资源为nil。这是否因为<<操作而发生?我猜这是最有可能的,因为User模型的inventory_id属性。

我不得不说attr_accessible对我来说通常看起来像是一个黑客,我有点不喜欢它,虽然我可以理解为什么要使用它。你认为是这种情况吗?如果是这样,我怎么能清除那张支票?

1 个答案:

答案 0 :(得分:2)

let懒惰;除非使用您定义的变量,否则它不会调用该块,并且我看不到您在任何地方访问inventory。您访问@user.inventory,但这不是一回事。

要么丢失let定义并将其放在it块中,要么确保在确定它完成预期之前先调用它。