[英]Rails create method not adding record to the table, but works for the IRB
我到處都在尋找類似的錯誤,但是找不到解決方案,所以無奈之下我在這里發布了。
我的控制器有這個:
def add_upc
@upcs = Dvd.add_upc(params[:dogTag], params[:newUpc])
end
在模型中,我們有:
def self.add_upc(dogTag, newUpc)
existingUpc = Dvd.find(dogTag).dvd_upc2title.find_by_upc(newUpc)
if existingUpc.nil?
createdUpc = Dvd.find(dogTag).dvd_upc2title.create(:upc => newUpc)
if createdUpc
upcs = createdUpc
else
upcs = 'Error: nothing was created'
end
end
end
我已經設置了一個查看頁面,以查看正在發生的事情,並且可以看到createdUpc正在創建的對象。 我還可以確認正確地傳遞了參數dogTag和newUpc。 但是該記錄未添加到表中。
奇怪的是,如果我發出Dvd.find(dogTag).dvd_upc2title.create(:upc => newUpc)
命令並用值替代IRB中的變量,則此方法確實有效。
無法弄清楚為什么這不起作用。 我是Rails的新手,所以不知道可以使用其他什么錯誤調試來找出問題所在。
歡迎提出想法。
謝謝。
編輯:
發現了錯誤,這要歸功於RyanWilcox,這是我在控制器中為UPC進行的驗證,告訴我值已經存在(即使UPC應該是唯一的。是否可以對兩個字段進行組合驗證?
對於這種情況(“為什么無法保存?”),我真正喜歡做的就是使用create!
而不是create
。
這將引發錯誤異常,驗證失敗的文本將作為異常消息。 它使這樣的問題變得顯而易見。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.