Мне удалось создать приложение, которое работает только для регистрации и входа в систему. В настоящее время я разрешаю пользователям активировать учетную запись электронной почты (следуя этому руководству: https://www.railstutorial.org/book/account_activation_password_reset и «rails генерирует контроллер AccountActivations --no-test-framework»), но я хочу, чтобы администратор мог активировать или деактивировать пользователей. В моей модели пользователей, мне удалось определить два метода:Разрешить администратору активировать или деактивировать пользователей - Rails
def activate_account!
update_attribute :is_active, true
end
def deactivate_account!
update_attribute :is_active, false
end
И на моих пользователей частичный вид, мне удалось
<% if current_user.admin? && !current_user?(user) %>
<%= button_to "Deactivate", user, data: { confirm: "Are you sure?" } %>
<% end %>
Мои маршруты выглядеть следующим образом:
get 'password_resets/new'
get 'password_resets/edit'
root 'static_pages#home'
get 'help' = 'static_pages#help'
get 'about' = 'static_pages#about'
get 'contact' = 'static_pages#contact'
get 'signup' = 'users#new'
get 'login' = 'sessions#new'
post 'login' = 'sessions#create'
delete 'logout' = 'sessions#destroy'
resources :users
resources :account_activations, only: [:edit]
resources :password_resets, only: [:new, :create, :edit, :update]
проблема в том, что я не знаю, как действовать дальше. Я не хочу использовать Devise или CanCan, потому что, как новичок, я хочу знать, как это сделать вручную. Помогите мне в реализации активации и деактивации пользователей из приложения (администратор может только это).
Hi, Chase! Большое спасибо .. Уже прочитали эти главы.они были прекрасны! Тем не менее, есть проблемы. Тем не менее, я думаю, что это проблема маршрутизации, так как приложение теперь имеет кнопку для деактивации и подтверждения, но не выполняет действие. Я также сменил контроллер на: 'def deactivate User.find (params [: id]). Deactivate flash [: success] =" Пользователь деактивирован " redirect_to users_url end' и определено первое' before_action: admin_user, только: [: destroy,: deactivate] '. Что может быть неправильным? – ClauCece
Какая ошибка вы получаете? Если вы можете добавить свою ошибку, я отредактирую свой ответ, чтобы обратиться к ней. –
На веб-странице: «Извините, но что-то пошло не так». В журналах: '... lib/action_dispatch/templates/rescues/routing_error.html.erb внутри rescues/layout' – ClauCece