Переключение не-attr_accessible переменной - PullRequest
0 голосов
/ 17 мая 2011

Я создаю приложение Rails, которое представляет собой платформу для блогов, со многими авторами. Моя модель Пользователь имеет логический атрибут : writer , указывающий, имеет ли конкретный пользователь разрешение на публикацию статьи. Во избежание массового назначения атрибут : writer имеет значение NOT , указанное в attr_accessible для модели User . Вместо этого я подумал о создании функции, аналогичной следующей, чтобы разрешить переключение прав записи:

def toggle_writer    
  if User.find(:id).writer?
    User.find(:id).update_attribute(:writer, false)
  else
    User.find(:id).update_attribute(:writer, true)
  end
  flash[:success] = "User permissions toggled."
  redirect_to admintools_users_path
end

У меня есть несколько вопросов относительно этого подхода:

  1. Как бы я вызвал это из представления? Есть ли способ вызвать функцию через link_to или button_for ?
  2. Куда бы я положил такую ​​функцию? В контроллере или помощнике?
  3. Нужно ли мне редактировать какие-либо маршруты в файле config / rout.rb ?

Заранее спасибо за помощь!

1 Ответ

2 голосов
/ 17 мая 2011
  1. Да, вы можете.
  2. Лучше, если вы положите его в users_controller.
  3. Да, вы бы.Поскольку это действие будет обновлять одного пользователя, вы должны сделать следующее в routes.rb:

     resources :users do
       member do #this means you are doing with a certain object
         get :toggle_writer, :as => :toggle_writer_for # this line will generate toggle_writer_for_user_path route
       end
     end
    

Теперь вы можете использовать этот маршрут с link_to, какlink_to("Toggle writer", toggle_writer_for_user_path(@user)), где @user это вы можете получить от params[:id].

...