1

「Rails を使用したアジャイル Web 開発」という本の第 13 章の最後の演習を行っています。

以前は「Order」という名前のモデルがあり、「ship_date」という名前の列を追加する移行を作成しました。

add_column :orders, :ship_date, :datetime

次に、次のように、respond_to の前に、orders_controller の「create」アクションに行を追加しました。

@order.ship_date = Time.now.to_date

次に、テストファイルを次のように変更しました。

ship_date_expected = Time.now.to_date  ### new line
post_via_redirect "/orders",
                  order: { name:     "Dave Thomas",
                           address:  "123 The Street",
                           email:    "dave@example.com",
                           pay_type: "Check",
                           ship_date: Time.now.to_date } ### new line
### some existing lines
assert_equal ship_date_expected, order.ship_date  ### new line

次に、統合テストを実行しますが、次のような失敗が発生します。

test_buying_a_product(UserStoriesTest)[H:/Sites/rails_projects/depot/test/integration/user_stories_test.rb:56]:<Tue, 22 Jan 2013> expected but was <nil>.

データベースを確認したところ、新しい列が存在することが確認されました。したがって、問題は割り当てに関するものだと思いました。これはばかげた問題のはずです...しかし、私はそれを修正する方法がわかりません。誰でも私を助けることができますか?

どうも!!!

作成アクション:

def create
  @order = Order.new(params[:order])
  @order.add_line_items_from_cart(current_cart)
  @order.ship_date = Time.now.to_date

  respond_to do |format|
    if @order.save
      Cart.destroy(session[:cart_id])
      session[:cart_id] = nil
      OrderNotifier.received(@order).deliver
      format.html { redirect_to store_url, notice: I18n.t('.thanks') }
      format.json { render json: @order, status: :created, location: @order }
    else
      @cart = current_cart
      format.html { render action: "new" }
      format.json { render json: @order.errors, status: :unprocessable_entity }
    end
  end
end
4

2 に答える 2

1

割り当てを行った後に必要なことを忘れないでくださいsave@order

于 2013-01-22T11:26:09.213 に答える