2013-08-30 1 views
1

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

ответ

1

Имя метода должно быть def self.find_first_by_auth_conditions(warden_conditions)

+0

Я попробовал этот путь, и снова она вызывается только из подобластей, но не от мастера. Моя модель пользователя: database_authenticatable, если эта помощь. – mzdravkov