ruby-on-rails - 使用移动 gem 使用脏方法进行跟踪的轨道
问题描述
Rails 控制器方法正在尝试传递对象更改
if @union.update(union_params)
puts '||'
puts @union.changed
puts @union.changes
@union.update_with_log(union_params, current_user.id)
但是,当它运行时,控制台会为更改注册一个空哈希,甚至不处理changed
动词。
||
{}
在控制台中使用调用的变量进行测试时,动词changes
按预期运行。但是,应用程序的操作上下文是通过mobility
gem 处理的可转换变量。
在实践中,控制台注册编辑方式如下:
Mobility::Backends::ActiveRecord::KeyValue::TextTranslation Update (0.4ms) UPDATE "mobility_text_translations" SET "value" = $1, "updated_at" = $2 WHERE "mobility_text_translations"."id" = $3 [...]
为什么这种行为与mobility
& 实例变量不同?
解决方案
需要调用的方法在 Dirty 跟踪部分末尾的文档previous_changes
中指出,而不是(在撰写本文时,文档在后一点上没有明确说明)。changes
推荐阅读
- javascript - AddEventListener 看不到范围
- node.js - 节点js中的解压缩流“密码错误”问题
- c++ - 无法编译rtmidi测试cmidiin.cpp文件,非法指令
- java - 正确拆分长字符串以供 Talkback 读取
- jquery - 如何防止附加到可选择项的 jQuery 小部件在鼠标悬停时变得更大?
- java - 如何保存GET请求url的状态java spring rest
- python - 如何修复值错误:int() 以 10 为底的无效文字
- python - 如何初始化特定任务的权重和反向传播修改
- python - 缩短填充多个列表的第一个和最后一个值的 for 循环
- jenkins - 如何在 Jenkins 中更新环境变量?