您好,我有一個應用程式邀請用戶作為與會者
在參加者控制器中,創建參加者時會創建用戶,但不會向系統發送邀請
與會者控制器.rb
def create
@attendee = Attendee.new(attendee_params)
@user = User.invite!({email: "#{@attendee.email}"}, current_user) do |u|
u.skip_invitation = true
end
@attendee.user_id = @user.id
respond_to do |format|
if @attendee.save
format.html { redirect_to meeting_url(@attendee.meeting), notice: "Attendee was successfully created." }
format.json { render :show, status: :created, location: @attendee }
else
format.html { render :new, status: :unprocessable_entity }
format.json { render json: @attendee.errors, status: :unprocessable_entity }
end
end
end
在同一個控制器中,我有一個 send_invite
def send_invite
@attendee = Attendee.find(params[:attendee_id])
User.where(id: @attendee.user_id).deliver_invitation
redirect_to meeting_url(@attendee.meeting)
end
當我通過按鈕點擊它時,我得到
AttendeesController#send_invite 中的 NoMethodError 未定義方法 `deliver_invitation' 用于 #<ActiveRecord::Relation
[devise_invitable][1] 明確指出
如果要創建邀請但不發送,可以將 skip_invitation 設定為 true。
user = User.invite!(email: '[email protected]', name: 'John Doe') do |u|
u.skip_invitation = true
end
# => the record will be created, but the invitation email will not be sent
自己生成accept_user_invitation_url時,必須使用raw_invitation_token。該值在您邀請用戶時暫時可用,并在收到時被解密。
accept_user_invitation_url(invitation_token: user.raw_invitation_token)
當使用skip_invitation 時,您還必須在向用戶發送其令牌時設定invitation_sent_at 欄位。否則,當用戶嘗試接受邀請時,將產生“無效的邀請令牌”錯誤。您可以設定列,或呼叫deliver_invitation發送邀請并設定列:
user.deliver_invitation
我錯過了什么?[1]:https ://github.com/scambra/devise_invitable#send-an-invitation-
uj5u.com熱心網友回復:
我猜.deliver_invitation是用戶模型上的一個實體方法。(通過 devise_invitable)。
在這種情況下,您可能會想要這樣的東西:
User.where(id: @attendee.user_id).each do |user|
user.deliver_invitation
end
uj5u.com熱心網友回復:
假設deliver_invitation是 User 模型的實體方法,您可以修改您的send_invite方法,如下所示:
def send_invite
@attendee = Attendee.find(params[:attendee_id])
user = User.find(@attendee.user_id)
user.deliver_invitation
redirect_to meeting_url(@attendee.meeting)
end
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/505043.html
標籤:轨道上的红宝石 设计 ruby-on-rails-7 设计邀请
上一篇:無法安裝gem'pg'
