【问题标题】:Rails 4: activerecord create and update return value?Rails 4:activerecord 创建和更新返回值?
【发布时间】:2016-04-04 00:41:29
【问题描述】:

我正在运行 Rails 4.2.4。模型中的一个属性在插入或更新时由数据库(PostgreSQL 9.3)计算和存储。我想知道,除了在 activerecord 创建和更新后调用“reload”方法之外,是否可以让它们自动返回计算属性的值?我看到 create 在其 SQL 语句中添加了 RETURNING "id"。如何在语句中同时添加 RETURNING "my_calculated_attribute"?

最好不要在每次创建或更新后“重新加载”查询。

提前致谢。

【问题讨论】:

  • 我很确定 reload 是您唯一的选择。
  • 我的挖掘得出了同样的结论——我希望它是错误的。为了避免额外的reload 查询,我可能只需要将计算移到 activerecord 回调中。
  • 只要你的 Rails 应用程序不会接触数据库,它就可以工作。您可以添加一个 CHECK 约束以确保我想正确计算该属性。
  • 感谢您的提醒。 CHECK 约束是个好主意。不希望其他客户端破坏一致性。

标签: ruby postgresql ruby-on-rails-4 activerecord


【解决方案1】:

工作交给我 在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

重要: self.message是数据库中的字段名

【讨论】:

  • 你能解释一下这个答案与这个问题有什么关系吗?
猜你喜欢
  • 1970-01-01
  • 2018-05-21
  • 1970-01-01
  • 2019-10-11
  • 2017-09-30
  • 1970-01-01
  • 1970-01-01
  • 2019-08-22
  • 1970-01-01
相关资源
最近更新 更多