я следующие таблицы:Devise: Как только аутентифицировать пользователей, у которых есть отношение к другой модели?
users
======
id
email
password
..device columns..
providers
==========
user_id
..irreverent columns..
consumers
==========
user_id
..irrelevant columns..
как потребителей, так и поставщиков принадлежат к users
таблице, мы используем эту конструкцию, потому что есть области веб-приложение, которое обе стороны могут получить доступ, однако, иногда являются областями, зависящими от провайдера, потребителями которых не должно быть, например, панель управления поставщиками.
Таким образом, возникает вопрос: Как получить Devise, чтобы просто аутентифицировать поставщиков, а не потребителей на конкретных пространствах поставщиков, когда он знает только о таблице пользователей, а не о поставщиках/потребителях?
Вот что я думаю я должен делать:
контроллеры/поставщик/base_controller.rb:
before_action :authenticate_provider!
private
#A modified wrapper around authenticate_user!
def authenticate_provider!
authenticate_user!
redirect_to sign_in_path unless Provider.find_by(user: current_user)
end
Остерегайтесь этих непочтительных колонок – Slicedpan
На более серьезной ноте, что не так с решением, которое вы предложили? – Slicedpan
@Slicedpan На самом деле ничего, я просто ожидал более элегантного решения, возможно, функции, исходящей из Devise из коробки. – Abdulaziz