簡體   English   中英

限制Rails郵箱gem中的收件人數量

[英]Limit number of recipients in rails mailboxer gem

我在應用程序中使用郵箱管理器gem處理用戶之間的消息傳遞,並且一切正常,但是我試圖找到一種方法來限制可以發送消息的用戶數量。 我不知道如何覆蓋或添加到gem中處理的驗證。

這是我的控制器

class ConversationsController < ApplicationController
    before_filter :authenticate_member!
    helper_method :mailbox, :conversation

def index
    @messages_count = current_member.mailbox.inbox({:read => false}).count
    @conversations ||= current_member.mailbox.inbox.all
    @sent ||= current_member.mailbox.sentbox.all
    @trash ||= current_member.mailbox.trash.all
end

def show
    @receipts = conversation.receipts_for(current_member).order('created_at desc').page(params[:page]).per_page(15)

    render :action => :show
    @receipts.mark_as_read
end

def create
    recipient_emails = conversation_params(:recipients).split(',')
    recipients = Member.where(user_name: recipient_emails).all

    conversation = current_member.
      send_message(recipients, *conversation_params(:body, :subject)).conversation

    redirect_to :conversations
end

def reply
  current_member.reply_to_conversation(conversation, *message_params(:body, :subject))
  redirect_to conversation_path
end

def trash  
    conversation.move_to_trash(current_member)  
    redirect_to :conversations 
end

def untrash  
    conversation.untrash(current_member)  
    redirect_to :back 
end

def empty_trash   
    current_member.mailbox.trash.each do |conversation|    
        conversation.receipts_for(current_member).update_all(:deleted => true)
    end
    redirect_to :conversations
end

private

    def mailbox
     @mailbox ||= current_member.mailbox
    end

    def conversation
     @conversation ||= mailbox.conversations.find(params[:id])
    end

    def conversation_params(*keys)
     fetch_params(:conversation, *keys)
    end

    def message_params(*keys)
     fetch_params(:message, *keys)
    end

    def fetch_params(key, *subkeys)
     params[key].instance_eval do
       case subkeys.size
       when 0 then self
       when 1 then self[subkeys.first]
       else subkeys.map{|k| self[k] }
       end
     end
    end

end

由於它是一個數組,因此我發現可以在控制器中的create動作上調用take():

recipient_emails = conversation_params(:recipients).split(',').take(14)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM