#ruby-on-rails-3
#ruby-on-rails-3
Вопрос:
Я создал модель блога с миграцией t.boolean :published, :default =>false
и теперь я не знаю, как сделать так, чтобы этот пост в блоге не публиковался по умолчанию и публиковать его мог только администратор. Часть авторизации может быть выполнена с помощью cancan, как насчет модели и контроллера?
Это мой текущий код: models /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
контроллер / 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:
Я не уверен, что понимаю, чего вы хотите, если вы используете CanCan, то ваш файл authorizations.rb должен содержать то, что могут делать пользователи с правами администратора, и то, что могут делать обычные пользователи.
Смотрите https://github.com/ryanb/cancan/wiki/Defining-Abilities
В зависимости от того, что вы используете для аутентификации, но если это что-то вроде Devise со встроенными помощниками, вы также можете использовать before_filter :authenticate_admin!, :only => [:edit, :update]
для тестирования и убедиться, что текущий пользователь является администратором. (Я бы рекомендовал внести в белый список:except вместо:only).
Комментарии:
1. спасибо за ответ.. тогда как отобразить только :published с true для отображения?? что я должен написать в индексе def?
2. я думаю, я нашел плагин, который соответствует моим потребностям.. github.com/mysmallidea/requires-approval