0

私はRubyonRailsアソシエーションを使用して、ストアモデルを製品モデルにリンクしています。

store has_many :products
product belongs_to :store

製品モデルの唯一の条件は、名前の存在です。

validates :name, :presence => true

新しい製品を作成するには、Productsコントローラー内で次のコードを使用します。createメソッド:

@store = Store.find_by_id session[:store_id]

if @store.products.create(:name => params[:name])
    redirect_to :back, :notice => "New product successfully created."
else
    redirect_to :back, :alert => "Can't create new product."
end

問題は、製品名が存在するかどうかに関係なく機能することです。つまり、すべての場合において、「新製品が正常に作成された」ということです。製品名が空の場合でも、メッセージ。

どこに問題があるのか​​わかりません。何か助けてください?

4

1 に答える 1

2

ドキュメントから:

検証に合格すると、オブジェクト(または複数のオブジェクト)を作成してデータベースに保存します。結果のオブジェクトは、オブジェクトがデータベースに正常に保存されたかどうかに関係なく返されます。

保存されたレコードを理解するかどうかについては、別の方法を使用する必要があります。

@store = Store.find_by_id session[:store_id]

product = @store.products.build(name: params[:name])

if product.save
  redirect_to :back, notice: "New product successfully created."
else
  redirect_to :back, alert: "Can't create new product."
end
于 2012-08-13T09:44:06.997 に答える