【问题标题】:Rails 5 with mongoid .changed is always empty on update带有 mongoid .changed 的​​ Rails 5 在更新时始终为空
【发布时间】:2016-09-25 20:21:07
【问题描述】:

在我的控制器中,我有 *_params 来允许属性。无论如何,即使事情确实发生了变化, .changed 始终是空白的。是否有新的 Rails 5 方法来检测更改的属性?

# case_params is the basic rails controller permission method
if @case.update(case_params)
      puts @case.changed.count # this is is always 0
      ...

谁能看到我做错了什么?我需要知道发生了什么变化,这样我就可以有选择地在线程中做一些其他工作,但仅限于更改的属性。

感谢您的帮助。

【问题讨论】:

标签: ruby-on-rails mongodb activerecord mongoid ruby-on-rails-5


【解决方案1】:

您可以使用@cases.previous_changes,它以散列的形式提供对文档的所有更改。哈希还包含updated_at 属性。您可以对上述计数执行 -1 以获取除 updated_at 之外的所有更改属性计数。

您可以通过@cases.previous_changes.keys.count - 1获取计数

我们需要减去 -1 以删除 updated_at 属性更改。

如果您想检测关联的变化,您可以尝试使用children_changed?

【讨论】:

  • 这似乎不适用于 embeds_many 对象,它始终为 0,即使您更改了嵌入对象并且可以看到更改工作,previous_changes 和 changes 始终为空。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-18
  • 2018-06-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多