将一个模型中的列数据设置为另一个列,按照 Rails 的方式。

10 浏览
0 Comments

将一个模型中的列数据设置为另一个列,按照 Rails 的方式。

在同一个模型中,有没有一种快捷的方法将一列数据设置为另一列数据?

我知道Rails中的for_each方法并且可以实现它。然而,我想问的是是否有类似User.update_all(last_logged_at: last_sync_position)这样的方法,其中last_logged_atlast_sync_position是模型user的列。

另外,我写的不是迁移文件。

我尝试搜索了一下,但是我只找到了MySQL的答案,不知道如何转换为Rails的方式。

0
0 Comments

问题出现的原因是用户想要根据每个用户的last_sync_position值来更新每个用户的last_logged_at列数据。为了解决这个问题,用户在模型上复制了数据。用户不确定是否有必要这样做,但是如果用户在mysql中找到了答案,可以使用"scope"。无论如何,用户在stackoverflow上找到了这个解决方法:

Rails 3.x How to write update all based on row value?

解决方法是使用以下代码:

User.update_all("last_logged_at=last_sync_position")

感谢提供解决方案。这确实是我正在寻找的。由于这个问题是与你分享的问题重复的,我将很快删除我的问题。

0