「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