我在我的应用程序中使用设计可用的gem.如果用户存在于应用程序中并且他单击接受邀请链接,则应将其重定向到登录页面,如果新用户单击该链接,则应将其重定向到注册页面.我没有得到如何覆盖after_accept_path_for方法...在哪里以及如何覆盖此方法,有人可以帮助我吗?关注https://github.com/scambra/devise_invitable/链接
我在我的应用程序中使用设计邀请。我已经为一些自定义行为覆盖了设计邀请控制器。当我尝试为此编写控制器测试时,出现以下错误:
NoMethodError: undefined method 'name' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)
这样做时会发生这种情况get :new
。
按照设置方向的指示设置路线:
devise_for :users, controllers: { sessions: 'users/sessions', invitations: 'users/invitations', registrations: :registrations }
Run Code Online (Sandbox Code Playgroud)
控制器位于 /app/controllers/users/invitations_controller.rb 下,名称在Users::InvitationsController
与测试 /tests/controllers/users/invitations_controller.rb 相同的文件中正确间隔Users::InvitationsControllerTest
这是测试:
context '#new' do
context 'while not signed in' do
should 'redirect to the login page' do
get :new
assert_redirected_to new_user_session_path
end
end
end
Run Code Online (Sandbox Code Playgroud)
这是行动:
def new
self.resource = resource_class.new
self.resource.build_group if current_inviter.is_admin?
self.resource.group = current_inviter.group if current_inviter.is_manager?
render :new
end
Run Code Online (Sandbox Code Playgroud)
感谢任何帮助谢谢。
我设计了一个诱人的宝石\n连接在我的应用程序和设计中。
\n一切工作正常。当我创建新用户时,它们会保存在数据库中,并且邮件程序会向电子邮件地址发送电子邮件。用户单击电子邮件,设置密码,然后登录。
\n但有时这些用户会丢失电子邮件,或者更确切地说无法在电子邮件收件箱中找到它。我\xe2\x80\x99d 喜欢在用户索引页面上有一个重新发送邀请按钮。
\n当用户单击重新发送时,我希望邀请用户收到另一封发送给他们的电子邮件。
\n有人用 devise invitable 成功完成了这个任务吗?如果是这样,你能分享一下如何做吗?
\n我又带着我的 ctrlpanel 应用程序回来了。
我让它 100% 处于开发状态,并完成了将其加载到 Heroku 并安装了应用程序、安装 gems 的过程。数据库(大部分)都在那里,但我什至在数据库之前就遇到了问题。我在处理 devise_invitable 时遇到错误,但我在开发中没有遇到该错误。令我惊讶的是,当我在笔记本电脑上启动生产时,我确实遇到了同样的错误,这至少让我感到震惊,因为在开发中一切都很完美。所以我知道这不是 Heroku 问题,我很高兴至少可以重现它。完整的错误如下,但专门处理该错误的行是:
"C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/zeitwerk-2.4.2/lib/zeitwerk/loader/callbacks.rb:18:in `on_file_autoloaded': expected file D:/rails/ctrlpanel/app/controllers/invitations_controller.rb to define constant InvitationsController, but didn't (Zeitwerk::NameError)C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/zeitwerk-2.4.2/lib/zeitwerk/loader/callbacks.rb:18:in `on_file_autoloaded': expected file D:/rails/ctrlpanel/app/controllers/invitations_controller.rb to define constant InvitationsController, but didn't (Zeitwerk::NameError)"
Run Code Online (Sandbox Code Playgroud)
我在网上做了一些搜索(实际上很多),我唯一能找到的就是建议将invitations_controller.rb文件复制到controllers文件夹下一个名为users的文件夹中,我确实尝试过,我复制了它实际上我也尝试过移动它。两者都没有帮助。这在开发中可以正常工作。所以我开始比较这两个环境文件。
我通过更改这两个条目来克服它:
config.cache_classes = false in production.rb
config.eager_load = false in production.rb
Run Code Online (Sandbox Code Playgroud)
然而,我到处都看到帖子说关闭这两个选项是非常糟糕的,它会以某种方式影响视图,果然我的引导程序都是球童使用的,我只能假设是由于这两个选项被关闭。我确信其他人以前一定见过这个,但我似乎找不到任何东西。我检查了 devise_invitable 文档,将其更新为 av .02 更高(没有效果)。
错误太长,我很难找到一个好的搜索词来获得结果。
我很困惑,因为一切都必须正确,否则在开发中就无法正常工作,或者我不这么认为?如果需要查看任何其他文件,请告诉我,我很乐意显示它。
预先感谢您提供的任何帮助或建议。
斯科特
这是错误:
scottm@RED-IT-LAP-0001 MINGW64 /d/rails/ctrlpanel (master)
$ rails server -e production
=> Booting Puma
=> Rails 6.1.3.2 application starting in production
=> …
Run Code Online (Sandbox Code Playgroud) 在我的应用程序中有两种用户(运动员和用户).Athlete模型扩展了User模型,常规用户模型为其他类型的用户分配了不同的角色.
出于某种原因,我的一些用户具有某种角色,该valid_password?
方法无效.这适用于通过invitable
设计模块邀请的用户.还有其他人碰到这个吗?这导致我的应用无法在受邀用户无法登录的情况下正常工作