我覆蓋設計的確認!方法來發送一個值得歡迎的消息,我的用戶:devise_invitable:邀請後確認
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(或其他所謂的)方法嗎?
我希望受邀用戶保持未經確認,然後在接受邀請後確認。
謝謝,非常感謝任何幫助!
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
想通了:https://gist.github.com/982181 – 2011-05-20 01:39:13