j-d*_*exx 9 ruby-on-rails dirty-data
我似乎记得在某个地方读取如果没有更改属性(可能是作为活动记录脏的一部分),rails将不会提交到数据库就是这种情况?我似乎无法找到它,并且通过源代码快速查看并不是明智之举.
如果这是假的,我需要使用before_save回调,因为我想根据是否发生了更改来运行一些代码.
我假设after_save与脏数据将无法正常工作?
Dav*_*and 20
Rails不会执行,UPDATE但after_save即使没有任何更改,它也会运行回调:
pry $ u = User.first
=> #<User id: 1, email: "dave@davebryand.com", username: "dbryand"...
pry $ u.updated_at
=> Tue, 24 Jun 2014 18:36:04 UTC +00:00
pry $ u.changed?
=> false
pry $ u.save
From: /Users/dave/Projects/sample/app/models/user.rb @ line 3 :
1: class User < ActiveRecord::Base
2:
=> 3: after_save -> { binding.pry }
pry $ exit
=> true
pry $ u.updated_at
=> Tue, 24 Jun 2014 18:36:04 UTC +00:00
Run Code Online (Sandbox Code Playgroud)
如果您想要根据a中特定属性的更改执行某些操作before_save,只需执行以下操作:
pry $ u = User.first
=> #<User id: 1, email: "dave@davebryand.com", username: "dbryand"...
pry $ u.save
=> true
pry $ u.name = "John Doe"
=> "John Doe"
pry $ u.save
From: /Users/dave/Projects/sample/app/models/user.rb @ line 3 :
1: class User < ActiveRecord::Base
2:
=> 3: before_save -> { binding.pry if name_changed? }
Run Code Online (Sandbox Code Playgroud)
这里有脏话:http://api.rubyonrails.org/classes/ActiveModel/Dirty.html
| 归档时间: |
|
| 查看次数: |
6590 次 |
| 最近记录: |