设计可邀请:可选择发送电子邮件

AnA*_*ice 4 ruby-on-rails devise ruby-on-rails-3

在设计中,您可以通过执行以下方式邀请新用户:

User.invite!(:email => "new_user@example.com", :name => "John Doe")
Run Code Online (Sandbox Code Playgroud)

我想做的是(有时)阻止设计邀请发送电子邮件.我在库中找到了以下代码:

def invite!
        if new_record? || invited?
          self.skip_confirmation! if self.new_record? && self.respond_to?(:skip_confirmation!)
          generate_invitation_token if self.invitation_token.nil?
          self.invitation_sent_at = Time.now.utc
          save(:validate => false)
          ::Devise.mailer.invitation_instructions(self).deliver
        end
      end
Run Code Online (Sandbox Code Playgroud)

有关如何最好地更新以至于不在最后一行发送电子邮件的任何想法?我不熟悉::

谢谢

Mat*_*usz 12

您可以使用:

User.invite!(:email => "new_user@example.com", :name => "John Doe") do |u|
  u.skip_invitation = true
end
Run Code Online (Sandbox Code Playgroud)

要么

User.invite!(:email => "new_user@example.com", :name => "John Doe", :skip_invitation => true)
Run Code Online (Sandbox Code Playgroud)

这将跳过邀请电子邮件.

  • 您可以直接在实例上使用skip_invitation属性,方法是将其设置为@ user.skip_invitation = true,然后调用@ user.invite! (4认同)