ruby-on-rails - mongoid update_attributes 改变了吗?

标签 ruby-on-rails ruby mongodb activerecord mongoid

我想更新属性然后检查信息是否改变

您可以简单地将此代码传递给现有 rails + mongoid 项目中的 rails console

class TestModel
  include Mongoid::Document
  include Mongoid::Timestamps
  field :name, type: String
end

test = TestModel.new({:name => "name 1"})
test.save()
=> true

test
=> created_at: 2012-11-14 13:48:26 UTC, updated_at: 2012-11-14 13:48:26 UTC

test.changed?
=> false
test.name_changed?
=> false

test.update_attributes({:name => "name 2"})
=> true

test.changed?
=> false
test.name_changed?
=> false

test
=> created_at: 2012-11-14 13:48:26 UTC, updated_at: 2012-11-14 13:49:23 UTC

我做错了什么还是这是一个错误?

最佳答案

这完全符合逻辑。

脏方法旨在用于检查对象在保存之前是否已更改。根据定义,持久对象没有待处理的更改。

你应该这样做:

test.assign_attributes(attributes)
test.changed? #=> true
test.save

See method definition .

关于ruby-on-rails - mongoid update_attributes 改变了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13380250/

相关文章:

php - 如何从特定 MongoDB 文档中的对象数组中获取特定对象?

json - 使用 -jsonArray 时 mongoimport 的速度非常慢

python - 在 Flask 中实现 MongoDB 搜索引擎 API

ruby-on-rails - Pengwynn 领英 Gem : How to follow a company

ruby-on-rails - 在 Rails Controller 测试中,有没有办法模拟特定的远程 IP?

ruby - 如何在 ruby​​ watir 中使用 xpath 获取 <legend> 标签的文本值。(使用 IE)

ruby-on-rails - Rails 保留类名称

ruby-on-rails - bootstrap 无法在 ruby​​ on Rails 中工作 : navbar not displayed

ruby-on-rails - Rails 将 will_paginate 与组合查询结果结合使用

ruby - 假或真!=真或假!=真||错误的