我到處尋找類似的錯誤,但無法找到解決方案,所以在絕望中我在這裏發佈。Rails創建方法不向表中添加記錄,但適用於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設置驗證是否有辦法。到2場的組合驗證?
看看你的日誌/ development.log並嘗試用這些參數執行Dvd.add_upc。可能會有一些命名問題或諸如此類。所以試着把你在方法中使用的所有參數都放在一起。 – phoet
@phoet這給我一個線索。當我從IRB運行Dvd.add_upc時,日誌沒有顯示任何內容,但它確實返回了':newUpc',這不是我所期望的。我是否正確地從控制器傳遞參數? ':newUpc'符號是什麼意思? – kakubei