ruby on rails -这是由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对我来说似乎是一个hack,我有点不喜欢它,尽管我可以看到为什么应该使用它。你认为是这样吗?如果是这样,我怎样才能避开那张支票呢?

let是懒惰的;它不会调用块,除非你定义的变量被使用,我没有看到你在任何地方访问inventory。您访问@user.inventory,但这不是同一件事。

要么丢掉let的定义,把它放在你的it块中,要么确保你先调用它,然后再确保它做了它应该做的事情。

相关内容

  • 没有找到相关文章

最新更新