рельсы - администрирование + разработка создания новых пользователей идет на разработку контроллера
Я работаю над приложением rails, используя rails administrate. У меня есть интерфейс администратора с ресурсом под названиемadmin_users
что контролируется разработкой. Прямо сейчас пользователи действительно создаются только в консоли rails, и было добавлено устройство devise, позволяющее пользователям иметь возможность omniauth. На этой панели мне нужна возможность создавать admin_users для дополнительных пользователей, которых я хочу пригласить в приложение, поскольку это проще, чем делать это из консоли rails в рабочей среде.
У меня есть контроллер, Admin::AdminUsersController
для обработки этой функции в соответствии с приборной панелью. прямо сейчас он перечисляет текущих admin_users в системе, которые были созданы из консоли rails, и это прекрасно работает.
Теперь я добавляю возможность создавать пользователей-администраторов из интерфейса администрирования rails. Однако при заполнении формы наadmin/admin_users/new
, devise перехватывает запрос и пытается выйти из системы. Глядя на мой сервер рельсов, вот журналы
app_1 | Started POST "/admin/admin_users" for 192.168.96.1 at 2020-02-25 02:38:41 +0000
app_1 | Cannot render console from 192.168.96.1! Allowed networks: 127.0.0.0/127.255.255.255, ::1
app_1 | Processing by Devise::RegistrationsController#create as HTML
app_1 | Parameters: {"authenticity_token"=>"LPbT7OCx8upC5ehWIZ1JV/o/UKttciyoThOgi06B4AUw8ve3x/stbjUT7Trvb9u0YMEoyEBobbbni0g7LNWvBg==", "admin_user"=>{"email"=>"test@somemail.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "reset_password_token"=>"[FILTERED]", "reset_password_sent_at"=>"[FILTERED]", "remember_created_at"=>""}, "commit"=>"Create Admin user"}
app_1 | AdminUser Load (0.6ms) SELECT "admin_users".* FROM "admin_users" WHERE "admin_users"."id" = $1 ORDER BY "admin_users"."id" ASC LIMIT $2 [["id", "2d795b9d-2b6f-4745-a58d-775076100c60"], ["LIMIT", 1]]
app_1 | Redirected to http://localhost:3000/
app_1 | Filter chain halted as :require_no_authentication rendered or redirected
app_1 | Completed 302 Found in 6ms (ActiveRecord: 0.6ms | Allocations: 2088)
app_1 |
app_1 |
app_1 | Started GET "/" for 192.168.96.1 at 2020-02-25 02:38:41 +0000
app_1 | Cannot render console from 192.168.96.1! Allowed networks: 127.0.0.0/127.255.255.255, ::1
app_1 | Processing by Rails::WelcomeController#index as HTML
app_1 | Rendering /usr/local/bundle/gems/railties-6.0.2.1/lib/rails/templates/rails/welcome/index.html.erb
app_1 | Rendered /usr/local/bundle/gems/railties-6.0.2.1/lib/rails/templates/rails/welcome/index.html.erb (Duration: 3.6ms | Allocations: 201)
app_1 | Completed 200 OK in 6ms (Views: 5.4ms | ActiveRecord: 0.0ms | Allocations: 1004)
app_1 |
И я не могу заставить контроллер ударить меня Admin::AdminUsersController#create
действие. Глядя на журналы, похоже, что он попадает в мой почтовый маршрут на/admin/admin_users
, devise перехватывает его на Devise::RegistrationsController#create
, он останавливается из Filter chain halted as :require_no_authentication
, а затем перенаправляет на мой корневой маршрут, который похож на то, когда я выхожу из системы.
Я даже добавил представление для переопределения представлений администратора по умолчанию в app/views/admin/admin_users/new.html.erb
чтобы вызвать форму, чтобы перейти к действию контроллера, которое я ищу, например
<section class="main-content__body">
<%= form_for([namespace, page.resource], :url => url_for(:controller => 'admin/admin_users', :action => 'create'), html: { class: "form" }) do |f| %>
<% if page.resource.errors.any? %>
<div id="error_explanation">
<h2>
<%= pluralize(page.resource.errors.count, "error") %>
prohibited this <%= page.resource_name %> from being saved:
</h2>
<ul>
<% page.resource.errors.full_messages.each do |message| %>
<li class="flash-error"><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<% page.attributes.each do |attribute| -%>
<div class="field-unit field-unit--<%= attribute.html_class %>">
<%= render_field attribute, f: f %>
</div>
<% end -%>
<div class="form-actions">
<%= f.submit %>
</div>
<% end %>
</section>
Я также пробовал добавить в свой devise_scope :admin_user
в моих маршрутах вроде
devise_scope :admin_user do
post "/admin/admin_users", to: 'admin/admin_users#create'
end
Что ничего не дало.
Функциональность, которую я ищу, - это когда я нахожусь на панели инструментов admin_users, чтобы создать admin_user, используя мой Admin::AdminUsersController#create
действие вместо Devise::RegistrationsController#create
действие.
Кто-нибудь знает, что мне нужно добавить, чтобы включить это?
1 ответ
Вы пробовали использовать пространство имен?
namespace :admin do
devise_for :users
# if the above doesn't work
# devise_for :admin_users
end
Кроме того, вы можете попробовать переопределить Administrate
базовый контроллер, как описано здесь: /questions/45257596/rails-sozdavajte-polzovatelej-devise-neposredstvenno-iz-paneli-administrirovaniya/55137377#55137377 с необходимыми полями.