[英]Rails models with before/after filters and observers, is it possible to ignore these hooks?
如果 model 具有 before/after 钩子,并且可能有一些其他事件的观察者,是否有可能仅在 model 上执行保存/更新操作并跳过任何/所有这些将触发的钩子?
例如,我执行了保存,并以某种方式告诉我的 model 忽略任何 after_save 事件,并且不要通知观察者此保存,因为我不希望它触发它通常所做的任何事情。
您可以使用 skip_callback 方法不执行回调。 例如:
User.skip_callback("create",:after,:send_confirmation_email)将跳过在 after_create 上配置的名称为 send_confirmation_email 的回调。
您可以通过以下方式设置相同的内容: User.set_callback("create",:after,:send_confirmation_email)
我使用update_all
来满足这些要求。
# update the name and price of product with id 23
Product.update_all({:name => "foo bar", :price => 25}, {:id => 23})
我以前也使用过这种技术:
product.name = "foo"
product.description = "bar"
changes = product.changes.inject({}){|h, v| h[v[0]]=v[1][1];h}
Product.update_all(changes, :id => product)
product.reload # for good measure..
在这里,您以正常方式对 object 进行操作,当您准备好更新 object 时,您提取更改的属性。 这消除了对要更新的列进行硬编码的需要。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.