2015-12-30 59 views
3

我正在運行Rails 4.2.4。在INSERT或UPDATE時,模型中的一個屬性被數據庫(PostgreSQL 9.3)計算和存儲。我想知道,除了在activerecord創建和更新之後調用「reload」方法之外,是否可以讓它們自動返回計算屬性的值?我看到create將RETURNING「id」添加到它的SQL語句中。如何添加RETURNING「my_calculated_attribute」以及語句?Rails 4:activerecord創建並更新返回值?

在每次創建或更新之後,如果沒有「重新加載」查詢將會很棒。

在此先感謝。

+0

我很確定'reload'是您唯一的選擇。 –

+0

我的挖掘得出了相同的結論 - 我希望這是錯誤的。爲了避免額外的'reload'查詢,我可能只需要將計算移到activerecord回調中。 – builder

+2

只要您的Rails應用程序不會觸及數據庫,就會工作。你可以添加一個CHECK約束來確保該屬性的計算正確。 –

回答

0

工作對我 在model.rb:

after_find :convert_message_to_string; 

def convert_message_to_string 
    hextostr = HTMLEntities.new; 

    unless hextostr.nil? or hextostr.blank? 
     msg_str = hextostr.decode(self.mensagem.to_s); 
     self.message = msg_str; 
    end 
end 

重要: 自我。 消息是數據庫中的字段名稱

+2

你能解釋這個答案如何與問題相關嗎? – builder