0

サブドメイン スコープで restful 認証方式を使用して rolerequirement を無視する

サブドメインを利用し、ユーザーが にいるかどうかに関係なく検索するサイトを作成しました:subdomain.domain.comまたはdomain.com. ユーザーがいる場合は、ユーザーがいる場合は、が表示subdomain.domain.com, /views/layouts/application.html.erbされdomain.com /views/layouts/promo_site.html.erbます。これを達成するために、Robby on Railsの指示に厳密に従いました。

どちらのレイアウトも同じコントローラーを使用します。さらに、両方のビューが機能するように、 restfulauthenticationで rolerequirement を使用して、スコープ (url.com または subdomain.url.com) を検索するメソッドを作成しました。

次の問題を特定しました。

  1. コントローラー内のメソッドが失敗の原因です。「NoMethodError コントローラー: 未定義のメソッド `require_role'」
  2. コントローラーが正しいスコープ url.com 内にある場合、before_filter :check_if_role_is_requiredメソッドは正常に機能します。subdomain.url.com スコープ内にある場合、check_if_role_is_requiredメソッドは NoMethodError を生成します。

次のコードは次のとおりです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

*上記のコードrequire_role ["alt", "student worker"], :except => [:list, :show, :index, :create]は が開始されたときに失敗することに注意してください。このコードは check_if_role_is_required メソッドの外では正常に機能するため、これはおそらく単純な ruby​​ エラーです。

このメソッドを機能するように書き直すにはどうすればよいですか?

ありがとう!

4

1 に答える 1

0

メソッド自体は問題ないようです。

subdomain.url.com にいるときはエラーが発生しますが、url.com にいるときはエラーが発生しないため、問題はメソッド定義ではなく、「サブドメインの変更」を処理するコードにあります。それがチェックすべきコードです。subdomain.url.com にいるときは、役割要件を「含めていない」ように見えます。

于 2010-02-12T09:37:14.893 に答える