2015-07-29 3 views
1

У меня есть модель под названием Person. Он имеет две дочерние модели Admin и Owner.Rails_admin не включают в поля по полям

Я создал rails_admin приборной панели с несколькими моделями с ассоциациями.

Я добавил устройство к Person, поэтому Admin и Owner могут войти на мою панель инструментов.

Я добавил авторизацию с cancan и определил их возможности. Администратор может управлять всем, пока владелец может управлять своими собственными данными.

Теперь вот в чем проблема. Когда Владелец регистрируется и пытается отредактировать себя, ему нужно написать свой пароль, и это хорошо.

Однако, когда администратор входит в систему и пытается изменить владельца, просит пароль для владельца.

Как исключить некоторые действия в действии, в зависимости от того, кто сейчас его меняет?

Я использую current_person, который зарегистрирован в mby devise, но как его получить, когда мой код rails_admin do /* my code */ end находится внутри моего кода модели?

ответ

1

Вот один из способов скрыть поле пароля, так что только пользователь, редактирующий свою запись, может его увидеть.

edit do 
    include_all_fields 
    [:password, :password_confirmation].each do |f| 
    field f do 
     visible do   
     bindings[:object].id == bindings[:view].current_user.id   
     end 
    end 
    end 
end 

Вы можете создать собственное действие для сброса пароля, ограниченного только администраторами.