Как можно использовать учетную запись администратора рельсов вне администратора рельсов для редактирования пользовательских данных?

Я хотел бы создать новый контроллер, который позволит пользователю-администратору редактировать модели, прикрепленные к пользователям за пределами администратора рельсов. Вот пример из моего route.rb:

devise_for :admins

mount RailsAdmin::Engine => '/admin', :as => 'rails_admin'

devise_for :dealers 
devise_for :users

get "..." => "..."
etc

Что мне нужно сделать как в моем контроллере, так и в route.rb, чтобы это стало возможным? Я довольно новичок в Rails. Спасибо! У меня ограниченное количество времени, поэтому создание плагина для rails-admin невозможно.


person davecom    schedule 26.06.2012    source источник


Ответы (1)


В вашем контроллере проверьте, вошел ли администратор с помощью admin_signed_in?, и вы также можете получить к нему доступ с помощью current_admin. Таким образом, вам просто нужно установить условия, проверяющие, разрешено ли это, и администратор должен включать или нет эти функции.

РЕДАКТИРОВАТЬ:

У вас может быть что-то подобное в вашем before_filter

before_filter :check_authentication

private

def check_authentication
  authenticate_user! unless admin_signed_in?
end
person Ismael    schedule 26.06.2012
comment
Что с маршрутами? Нужно ли указывать там что-то особенное? Могу ли я использовать контроллер, который используется для обычных пользовательских вещей? - person davecom; 26.06.2012
comment
Нет и да. Вы можете, но я не уверен, что это хорошая практика или нет. Но если вы торопитесь, то этот способ подойдет. Просто добавьте новые действия в свой контроллер и, возможно, добавьте фильтр before_filter только к этим действиям, чтобы проверить, вошел ли администратор в систему. И добавьте некоторую логику в свои представления, чтобы показывать ссылки, если есть администратор. - person Ismael; 26.06.2012
comment
Спасибо, это все очень полезно; но у меня все еще есть проблема - я не могу войти в систему как администратор и пользователь одновременно, так как я, очевидно, не должен знать пароль пользователя. Как мне получить его данные? Я согласен с тем, что это должно быть с представлением в приложении из rails_admin, но когда я делаю это, войдя в систему администратора, я получаю сообщение о том, что вы не являетесь действительным пользователем для этих данных, как я должен получать... - person davecom; 26.06.2012
comment
вы должны изменить это условие, чтобы оно было похоже на if ( user_signed_in? && @model.user_id == current_user.id) || admin_signed_in? - person Ismael; 26.06.2012
comment
Еще раз спасибо - вы имеете в виду before_filter, верно? Как изменить before_filter :authenticate_user! так выглядеть? Я предполагаю, что :authenticate_user является частью Devise - person davecom; 26.06.2012