如何让用户ping管理员设计

时间:2016-02-19 10:36:42

标签: ruby-on-rails devise

我希望用户能够在点击按钮时向管理员发送提醒。有点"帮帮我",留言。我看了,我知道你用current_user.admin做一些if else语句?但我不知道从哪里开始。

1 个答案:

答案 0 :(得分:1)

一个非常基本的实现就像拥有一个名为HelpTicket的模型,当用户按下Help Me按钮时,它会在数据库中创建一个新的Ticket。

然后,您可以随时通过电子邮件向管理员发送电子邮件,只要有新票证和/或您可以在管理员登录时检查是否有未应答的票证并通知他们。

使用侧

 # create_help_tickets_table_migration.rb
 create_table :help_tickets do |t|
   t.integer :user_id
   t.text :description
   t.integer :status, default: 0
   t.timestamps null: false
 end

 # help_ticket.rb
 class HelpTicket < ActiveRecord::Base
   belongs_to :user
   enum :status, [:unanswered, :completed]
 end

 # help_tickets_controller.rb
 class HelpTicketsController < ApplicationController
   def create
     ticket = HelpTicket.new(params.permit(:description))
     ticket.user_id = current_user
     render :ok if ticket.save
   end
 end       

Adminside

# application_controller.rb
class ApplicationController
  before_action :check_help_tickets, if: Proc.new { current_user.admin? }


  def check_help_tickets
    flash[:notice] = "There are unattended help tickets" if HelpTicket.unanswered.exists?
  end
end

希望这会给你一个方向,祝你好运。