【.build】って何? 〜RailsによるアジャイルWebアプリケーション開発 by Rails4〜
【RailsによるアジャイルWebアプリケーション開発】って本を読んでます。
で、ちょっと分からない箇所があったので、復習用にメモしておきます。
【.build】ってのがわからない
P106 ページにある以下のコードが分からん。。。
def create
product = Product.find(params[:product_id])
@line_item = @cart.line_items.build(product: product)
respond_to do |format|
if @line_item.save
format.html { redirect_to @line_item.cart,
notice: 'Line item was successfully created.' }
format.json { render action: 'show',
status: :created, location: @line_item }
else
format.html { render action: 'new' }
format.json { render json: @line_item.errors,
status: :unprocessable_entity }
end
end
end
before_actionで以下を実施しているので、@cartに入っているのはcart_id。(Cartモデルもidだけのもの)
module CurrentCart
extend ActiveSupport::Concern
private
def set_cart
@cart = Cart.find(session[:cart_id])
rescue ActiveRecord::RecordNotFound
@cart = Cart.create
session[:cart_id] = @cart.id
end
end
@line_item = @cart.line_items.build(product: product)
の部分が何をやっているのか分からない。
@cartにはcart_idだけが入っている。それにline_items.buildって何だろう?
Cartモデルは【has_many :line_items】になっているので、line_itemsモデルにproduct_idを追加している気もする。。
今後勉強していく中で、これが分かってくると思う!