0

我正在使用 Ruby on Rails 关联将 Store 模型链接到 Product 模型,使用:

store has_many :products
product belongs_to :store

Product 模型的唯一条件是存在名称:

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 回答