如何制作博客只能由管理员发布?

时间:2011-05-16 17:06:23

标签: ruby-on-rails-3

我创建了一个包含迁移t.boolean :published, :default =>false

的博客模型

现在我不知道如何在默认情况下将此博文发布为取消发布,只有管理员可以发布它。授权部分可以用cancan完成,模型和控制器怎么样?

这是我目前的代码: 模型/ blog.rb

class Blog < ActiveRecord::Base
  attr_accessible :title, :content, :user_id, :published
  has_many :comments, :as => :commentable

  def published?
     published
  end
  def published!
     self.published = true
  end
  def unpublished!
     self.published = false
  end
end

controller / blog_controller.rb#我正在使用make_resourceful插件来处理嵌套和多态

class BlogsController < ApplicationController
   make_resourceful do
   actions :all
response_for :create do
   flash[:notice] = "Successfully created article."
      redirect_to blogs_url
    end
response_for :update do
      flash[:notice] = "Successfully updated article."
      redirect_to blogs_url
    end
response_for :destroy do
      flash[:notice] = "Successfully destroyed article."
      redirect_to blogs_url
   end
 end
end

任何想法的人?或者是一个有用的链接?谢谢!

1 个答案:

答案 0 :(得分:0)

我不确定我是否按照你的意愿,如果你正在使用CanCan,那么你的authorizations.rb文件应该包含管理员用户可以做什么,以及普通用户可以做什么。

请参阅https://github.com/ryanb/cancan/wiki/Defining-Abilities

取决于您用于身份验证的内容,但如果它类似于内置帮助程序的Devise,您还可以使用before_filter :authenticate_admin!, :only => [:edit, :update]来测试并确保当前用户是管理员。 (我建议使用以下内容列入白名单:除了代替:仅限)。