繁体   English   中英

带有前后过滤器和观察器的 Rails 模型,是否可以忽略这些钩子?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM