rails - администрирование + разработка новых пользователей идет к разработке контроллера - PullRequest
0 голосов
/ 25 февраля 2020

Я работаю над приложением rails, используя администратор rails. У меня есть интерфейс администратора с ресурсом под названием admin_users, который контролируется devise. Прямо сейчас, пользователи действительно создаются только в консоли rails, и было добавлено устройство, позволяющее пользователям создавать универсальные возможности. На этой панели я хочу создать опцию admin_users для дополнительных пользователей, которых я хочу пригласить в приложение, поскольку это проще, чем делать это с консоли rails в рабочей среде.

У меня есть контроллер, Admin::AdminUsersController для обработки этой функциональности в соответствии с приборной панелью. прямо сейчас в нем перечислены текущие admin_users в системе, которые были созданы с консоли rails, и это прекрасно работает.

Теперь я добавляю возможность создавать пользователей-администраторов из интерфейса администрирования rails. Однако при заполнении формы на admin/admin_users/new devise, похоже, перехватывает запрос и пытается выйти из системы. Глядя на мой сервер rails, вот журналы

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, а затем перенаправляет на мой root маршрут, который похож на тот, когда я выхожу из системы.

Я даже добавил представление для переопределения административных представлений по умолчанию на app/views/admin/admin_users/new.html.erb, чтобы вызвать форму на go для искомого действия контроллера, например

<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>

I Я также пытался добавить к моим 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 Ответ

0 голосов
/ 25 февраля 2020

Вы пробовали с пространством имен?

namespace :admin do 
  devise_for :users
  # if the above doesn't work 
  # devise_for :admin_users
end

Кроме того, вы можете попробовать переопределить базовый контроллер Administrate, как описано здесь: { ссылка } с необходимыми полями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...