ruby-on-rails - Rails seeds.rb : How can I skip multiple callbacks using Class. skip_callback?

标签 ruby-on-rails ruby callback arguments activesupport

在我的 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/

相关文章:

ruby-on-rails - 在 ActiveJob 中排队多个作业

ruby-on-rails - Rails 关系问题 - 查找用户的下一次郊游

ruby - 使用 Ruby CSV 创建 Rails 记录,其中字符串字段不可查询

ruby - 如何从 Ruby 调用 CreateWindowEx?

node.js - Node fs rmdir 类型错误 'Callback must be a function'

ruby-on-rails - rubocop 警察不同意 : Layout/EmptyLineAfterGuardClause vs Layout/TrailingWhitespace

ruby-on-rails - 无法加载 httparty gem

ajax - 如何使用innerHTML在AJAX中执行包含JS的页面?

ruby-on-rails - ruby rails : Creating child objects

javascript - setTimeout 拒绝向回调发送参数