最近、モデルを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
一般的にハックのように思えて、私はちょっと好きではないと言わざるを得ませんが、なぜそれを使うべきかはわかります。これは事実だと思いますか?もしそうなら、どうすればそのチェックを避けることができますか?