簡體   English   中英

Rails的創建方法不向表中添加記錄,但適用於IRB

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM