ruby-on-rails – devise_invitable:邀请后确认
发布时间:2020-12-17 04:03:58 所属栏目:百科 来源:网络整理
导读:我重写了设计的确认!向我的用户发送欢迎消息的方法: class User ActiveRecord::Base devise :invitable,:database_authenticatable,:registerable,:recoverable,:rememberable,:confirmable,:validatable,:encryptable # ... # Devise confirm! method ove
我重写了设计的确认!向我的用户发送欢迎消息的方法:
class User < ActiveRecord::Base devise :invitable,:database_authenticatable,:registerable,:recoverable,:rememberable,:confirmable,:validatable,:encryptable # ... # Devise confirm! method overriden def confirm! UserMailer.welcome_alert(self).deliver super end end 用devise_invitable当用户接受邀请并设置密码时确认!方法永远不会被触发,是否有可能强迫它? devise_invitable如何确认用户? 或者也许我可以用同样的方式覆盖accept_invite(或其所谓的)方法? 我希望受邀用户保持未经证实,然后在接受邀请后确认. 谢谢,任何帮助非常感谢! Original Source UPDATE 纵观devise_invitable model,我发现可能导致这种不当行为的两种方法: # Accept an invitation by clearing invitation token and confirming it if model # is confirmable def accept_invitation! if self.invited? && self.valid? self.invitation_token = nil self.save end end # Reset invitation token and send invitation again def invite! if new_record? || invited? @skip_password = true 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 if save(:validate => self.class.validate_on_invite) self.invited_by.decrement_invitation_limit! if self.invited_by !!deliver_invitation unless @skip_invitation end end end 解决方法class User < ActiveRecord::Base devise :invitable,:encryptable # ... # devise confirm! method overriden def confirm! welcome_message super end # devise_invitable accept_invitation! method overriden def accept_invitation! self.confirm! super end # devise_invitable invite! method overriden def invite! super self.confirmed_at = nil self.save end private def welcome_message UserMailer.welcome_message(self).deliver end end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |