2012-08-12 120 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