2012-08-12 113 views
0

当我使用Ruby on Rails的联想到商店模式链接到产品型号,使用无验证错误:Ruby on Rails的:使用Rails模型协会

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 

问题是,它可以工作,但产品名称是否存在。我的意思是,在任何情况下,我都有“新产品成功创建”。消息,即使产品名称为空。

我找不出问题在哪里。请帮忙吗?

回答

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 
+0

谢谢米哈伊尔,它的工作原理。 – htaidirt 2012-08-13 18:58:00