2010-02-12 16 views
0

Ignorant rolerequirement avec la méthode restfulauthentication dans un champ de sous-domaineQuel est le problème avec cette méthode? (J'ai besoin impressionnant Ruby Coders)

J'ai créé un site qui utilise des sous-domaines et des recherches si l'utilisateur se trouve à: subdomain.domain.com ou domain.com. Si l'utilisateur est en subdomain.domain.com, /views/layouts/application.html.erb apparaît, si l'utilisateur est en domain.com /views/layouts/promo_site.html.erb apparaît. Pour ce faire, j'ai suivi de près les directions Robby on Rails.

Les deux mises en page utilisent le même contrôleur. En outre, j'utilise rolerequirement avec restfulauthentication, pour mes deux vues pour fonctionner J'ai créé des méthodes qui cherchent votre portée (url.com ou subdomain.url.com)

J'ai isolé le problème suivant:

  1. La méthode dans le contrôleur entraîne une défaillance. "NoMethodError Controller: méthode non définie` require_role '"
  2. Si le contrôleur est dans la bonne portée, url.com la méthode before_filter :check_if_role_is_required fonctionne correctement. Si elle se trouve dans le domaine subdomain.url.com, la méthode check_if_role_is_required génère une erreur NoMethodError.

Le code suivant est le check_if_role_is_required method:

def check_if_role_is_required 
require_role ["alt", "student worker"], :except => [:list, :show, :index, :create] unless promo_site? 
end 

* Notez le code ci-dessus échoue lorsque require_role ["alt", "student worker"], :except => [:list, :show, :index, :create] est lancé, ce code fonctionne très bien en dehors de la méthode check_if_role_is_required, c'est donc probablement une simple erreur de rubis.

Comment puis-je réécrire cette méthode pour fonctionner?

Merci!

Répondre

0

La méthode elle-même semble correcte. Comme vous obtenez l'erreur lorsque vous êtes sur subdomain.url.com, mais pas lorsque vous êtes sur url.com, votre problème ne réside pas dans la définition de la méthode, mais dans le code qui gère le changement de sous-domaine. . C'est le code que vous devriez vérifier. il semble que vous ne soyez pas "rolerequirement" lorsque vous êtes sur subdomain.url.com.

+0

J'ai corrigé ce retrait "before_filter" et simplement appelé ma méthode: check_if_role_is_required –