为了让多个人能够成为一个业务页面的管理员,我们创建了一个名为“管理”的模型,在这个模型中,人们可以申请成为一个企业的管理员,因此"0“的状态是”未决“,"1”的状态被接受。
如何防止用户编辑其状态仍为"0“的页面(挂起)。
class Administration < ActiveRecord::Base
attr_accessible :business_id, :user_id, :status
belongs_to :user
belongs_to :business
scope :pending, where('status = ?',0).order("updated_at desc")
def self.new_by_user_business( user, business)
admin = self.new
admin.business_id = business.id
admin.user_id = user.id
admin.status = 0
admin.save!
end
end以下是当前的“编辑页面”
<h1>Editing business</h1>
<%= render 'form1' %>这是业务负责人。
class BusinessesController < ApplicationController
respond_to :html, :xml, :json
before_filter :authenticate_user!, except: [:index, :show]
def index
@businesses = Business.all
respond_with(@businesses)
end
def show
@business = Business.find(params[:id])
if request.path != business_path(@business)
redirect_to @business, status: :moved_permanently
end
end
def new
@business = Business.new
3.times { @business.assets.build }
respond_with(@business)
end
def edit
@business = get_business(params[:id])
@avatar = @business.assets.count
@avatar = 3-@avatar
@avatar.times {@business.assets.build}
end
def create
@business = Business.new(params[:business])
if @business.save
redirect_to @business, notice: 'Business was successfully created.'
else
3.times { @business.assets.build }
render 'new'
end
end
def update
@business = get_business(params[:id])
if @business.update_attributes(params[:business])
flash[:notice] = "Successfully updated Business."
end
@avatar = @business.assets.count
@avatar = 3-@avatar
@avatar.times {@business.assets.build}
respond_with(@business)
end
def destroy
@business = get_business(params[:id])
@business.destroy
respond_with(@business)
end
def my_business
@business = Business.all
end
def business_tickets
@user = current_user
@business = get_business(params[:id])
@tickets = @business.tickets
@business_inbox = TicketReply.where(:email => @business.callred_email)
end
def your_business
@user = current_user
@business = get_business(params[:id])
if @business.users.map(&:id).include? current_user.id
redirect_to my_business_businesses_path, notice: 'You are already an administator of this business.'
else
@admin = Administration.new_by_user_business( @user, @business)
BusinessMailer.delay(queue: "is_your_business", priority: 20, run_at: 5.minutes.from_now).is_your_business(@user,@business)
redirect_to @business, notice: 'Thank you for claiming your business, and we will be in touch with you shortly.'
end
end
def view_message
# @business = Business.find(params[:business_id])
@ticket = Ticket.find(params[:id])
@reply = @ticket.ticket_replies
end
private
def get_business(business_id)
@business = Business.find(business_id)
end
end发布于 2014-02-28 21:17:16
您可以添加一个before_filter来检查状态。你将不得不改变一些逻辑,但这是一个想法
class BusinessesController < ApplicationController
before_filter :restrict_access, :only => [:edit, :update]
private
def restrict_access
@business = get_business(params[:id])
redirect to root_path, :notice => "Not Authorized" unless current_user.status == 1
end
endhttps://stackoverflow.com/questions/22105920
复制相似问题