2015-12-30 28 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