У меня есть приложение с несколькими приложениями, где каждый пользователь может иметь разные роли в разных поддоменах. Существует таблица UserRight, которая объединяет Tenant, User и Role. Чтобы определить, есть ли у Пользователя регистрация, в частности, арендатор/субдомен (есть регистрация, если в UserRights есть строка, которая присоединяется к пользователю и арендатору), я перезаписал метод self.find_for_authentication. Это выглядит так:Метод рельсов метод find_for_authentication не называется
def self.find_for_authentication(warden_conditions)
p "DEBUG"
if user = User.find_by_email(warden_conditions[:email])
t = Tenant.find_by_subdomain(warden_conditions[:subdomain])
for_auth = UserRight.find(:first, :conditions => ["user_id = :u and tenant_id = :t", {:u => user, :t => t}])
return for_auth.user if !for_auth.nil?
end
end
Я использую Apartment для нескольких баз данных и для проверки подлинности (если это имеет значение). Проблема заключается в том, что когда я нахожусь в субдомене, то этот метод (find_for_authentication) вызывается, но когда я нахожусь в основном домене (без субдомена), тогда этот метод вообще не вызывается при входе в систему. Таким образом, знак в форме просто говорит неправильный адрес электронной почты или пароль.
Я не мог найти, где вызывается find_for_authentication, путем разработки.
Я попробовал этот путь, и снова она вызывается только из подобластей, но не от мастера. Моя модель пользователя: database_authenticatable, если эта помощь. – mzdravkov