2

在我的控制檯我保存的模型是這樣的。然而,我在控制檯中調用ApplicationMailer後,上述機制不再起作用:(呼籲在Ruby中的模型保存on Rails的實際上不是它保存

MyMailer.send_some_emails 
billy.name = 'Jimmy' 
billy.save # returns true 
billy.save! # no exception thrown 
billy.reload 
billy.name # will return 'Billy', not 'Jimmy' as expected 

任何想法?

+0

也許這將有助於啓用SQL日誌記錄並查看是否將正確的數據發送到數據庫? 'ActiveRecord :: Base.logger = Logger.new(STDOUT)'。 – 2015-02-10 21:04:05

+0

我們確實已經啓用了SQL日誌記錄,在第一種情況下,我們看到SQL UPDATE語句輸出。但在第二種情況下,沒有任何內容發送到數據庫。我們只看到'begin transaction'後面緊接着'commit transaction' – 2015-02-10 21:05:40

+0

試試這幾件事: 在pry的'show-method billy.save'中確認它沒有被重新定義。 'billy.update_attributes(name:'Jimmy')'看看其他堅持的方法是否有效。 保存此模型的另一個實例。 保存另一個模型的實例。 – 2015-02-10 21:11:48

回答

0

我遇到了這幾次。 這一直的情況下,已經在其各自的模型屬性設置attr_accessor,沒有看到您的更多的代碼,我不能告訴你肯定的,但我敢打賭,你有這樣的事情。

class Student < ActiveRecord::Base 
    attr_accessor :name 
    #code... 
end 

退房的accepted answer to a similar question更多細節。但基本上你需要刪除attr_accessor :name行。

+0

我有幾個'attr_accessor',但他們都是完全不相關的領域(與設計有關)。 'name'沒有被引用。 – 2015-06-02 04:03:45

相關問題