在我的 seeds.rb
文件中,我正在创建类 Job 的多个对象。作业有这些回调:
class Job < ActiveRecord::Base
...
after_create :notify_by_email, :notify_by_text
...
end
我想避免在开发和暂存过程中生成这些电子邮件或文本消息(开发当前用户 LetterOpener,让这些电子邮件在我的浏览器中弹出是一件痛苦的事情。我只想能够运行 rake db: seed
并忽略终端)。在 StackOverflow 的另一个问题中,我发现我可以使用这个:
Job.skip_callback(:create, :after, :notify_by_email)
所以我尝试了以下方法来跳过一行中的两个回调:
Job.skip_callback(:create, :after, { :notify_by_email, :notify_by_text })
但是,这引发了错误。我检查了 ActiveSupport API但它并不表示一种方法来做我想做的事情,所以我求助于这个:
Job.skip_callback(:create, :after, :notify_by_email)
Job.skip_callback(:create, :after, :notify_by_text)
有没有一种方法可以像上面尝试的回调散列一样做到这一点?
最佳答案
您可能会混淆 skip_before_filter(它是 Controller 中的类似表亲)。
您可以通过添加 :if 或 :unless 选项跳过 after_create
after_create :notify_by_email, if: :new_user
def new_user
# logic to determine if user is new
end
我还建议将您的电子邮件发送到 Controller 并避免整个问题。
关于ruby-on-rails - Rails seeds.rb : How can I skip multiple callbacks using Class. skip_callback?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28503327/