至少,您可能想要添加一个Permission模型。如果它变得比您描述的更复杂,我也建议使用CanCan。
class Permission < ActiveRecord::Base
  #table is id, page_id, user_type_id, and permission_type (string).
  belongs_to :page
  belongs_to :user_type
end
在您的控制器中,您可以构建一个过滤器链,如下所示:
class PagesController < ApplicationController
  before_filter :load_page
  before_filter :authorize_view!, only: [ :show ]
  before_filter :authorize_edit!, only: [ :edit ]
  def show
  end
  def edit
  end
  private
    def load_page
      @page = Page.find(params[:id])
    end
    def authorize_view!
      if !@page.permissions.where(user_type_id: current_user.user_type_id, permission_type: "view").exists?
        flash[:notice] = "You do not have permission to view that page."
        redirect to root_path
      end
    end
    def authorize_edit!
      if !@page.permissions.where(user_type_id: current_user.user_type_id, permission_type: "edit").exists?
        flash[:notice] = "You do not have permission to edit that page."
        redirect to root_path
      end
    end
end
(这假设您current_user的应用程序中有一个方法)。