2011-01-05 2 views
4

초대장 수여 : 선택적으로 이메일 보내기

내가하고 싶은 일은 (때로는) 초대받은 사람이 이메일을 보내는 것을 막는 것입니다. 라이브러리에서 다음 코드를 찾았습니다.

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 

마지막 줄에서 전자 메일을 보내지 않도록 업데이트하는 방법에 대한 아이디어가 있습니까? 나는 익숙하지 않다. ::

덕분

+0

마지막 줄을 주석 처리 할 수 ​​있습니다.'# : Devise.mailer.invitation_instructions (self) .deliver' – miku

+0

@ 글쎄, 어떤 경우에는 이메일을 보내고 모든 경우는 그렇지는 않습니다. 내가 전달할 수있는 매개 변수가 있는지 궁금합니다. – AnApprentice

+0

내 사용자 모델에 추가하여 메서드를 덮어 쓸 수있었습니다. 문제가 지금은 "NoMethodError (정의되지 않은 메소드'invitation_instructions '에 대한 Devise :: Mailer : 클래스) : app/models/user.rb : 139 :'invite!' "어떤 아이디어를 내 사용자 모델에 추가하고 오류를 얻을 수 없습니까? – AnApprentice

답변

12

에 익숙하지 않다 :

User.invite!(:email => "[email protected]", :name => "John Doe") do |u| 
    u.skip_invitation = true 
end 

또는

User.invite!(:email => "[email protected]", :name => "John Doe", :skip_invitation => true) 

이 초대 이메일을 건너 뜁니다.

+1

나는 비슷한 문제가 있었고 'skip_invitation'이 인스턴스, 클래스에만 작동하지 않는 것을 발견했습니다. 그래서 @ user.invite!()가 존중하지 않습니다 : skip_invitation 매개 변수 – santuxus

+4

skip_invitation을 사용할 수 있습니다. @user.skip_invitation = true로 설정 한 다음 @ user.invite!를 호출하여 인스턴스의 속성을 직접 설정할 수 있습니다. –