【问题标题】:Devise invitable callback: undefined method `before_invitation_created'设计邀请回调:未定义的方法“before_invitation_created”
【发布时间】:2025-12-04 07:35:01
【问题描述】:

我在使用 devise_invitable 中的回调时遇到问题 - 具体来说,它们似乎是未定义的。

如果我尝试添加:

before_invitation_created :set_pending_invite

对于我的用户模型,我收到以下错误

未定义的方法`before_invitation_created'

是否有让回调被识别的技巧?我需要向我的控制器添加一些东西吗?

我的模型中有 :invitable:

class User < ActiveRecord::Base
has_many :pending_sites
rolify :role_cname => 'Group'

devise :invitable, :database_authenticatable, :zxcvbnable,
:recoverable, :rememberable, :trackable, :validatable, :confirmable, :omniauthable, :omniauth_providers => [:saml]

before_invitation_created :set_pending_invite
after_initialize :set_default_role, :if => :new_record?

【问题讨论】:

  • 除此回调外,其他设计邀请功能是否正常工作?
  • 添加后是否重新启动服务器,如果您尝试从 Rails 控制台尝试,则重新启动 Rails 控制台..
  • 由于此错误,服务器实际上不会重新启动 - 如果我尝试重新启动,我会得到:/Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.5/lib/active_record /dynamic_matchers.rb:26:in method_missing': undefined method before_invitation_created' for #<0x007fad38a991c8>

标签: ruby-on-rails devise devise-invitable


【解决方案1】:

我也有同样的问题。我调查了一下,主分支定义了这些回调,但它们还没有发布。在撰写本文时,最新版本是 2015 年 12 月 17 日的 1.5.5,并且直到 2015 年 12 月 29 日才提交带有新回调的提交 (https://github.com/scambra/devise_invitable/commit/3834b65bf1b979a4e9c8c1ac9769ea881e350c80)

此外,如果你想使用最新的,你可以把它放在你的 Gemfile 中:

gem 'devise_invitable', :git => 'git@github.com:scambra/devise_invitable.git'

【讨论】: