2011-04-20 10 views

答えて

0

私が知る限り、これは2通りあります。

簡単、あまりコントロールで:

#config/routes.rb 
resources :waffles, :constraints => {:referer => 'http://wafflesarerad.com'} 

もっとコントロール:

#config/routes.rb 
require 'referer_constraint' 
constraints (RefererConstraint) do 
    resources :waffles 
end 

#lib/referer_constraint.rb 
class RefererConstraint 
    def self.matches?(request) 
    request.referer = 'http://wafflesarerad.com' ? true :false 
    end 
end 

あなたはroutes.rbを中:constraints =>ハッシュと要求のどの部分でcontstrainことができます。 matches?(request)のクラスレベルメソッドを実装する、カスタムのカスタム制約クラスを作成することもできます。このメソッドは、制約が満たされているかどうかについてtrue/falseを返す必要があります。

+0

ありがとうございました。私の問題を解決しました。どのようにして制約ハッシュの可能な値がわかるでしょうか? – Zahid

0

パトリックの答えを改善するために、私はアプリでの制約クラスを配置

  • をお勧めします/ /代わりのlibに/の制約が、Railsは自動的にそれを拾うし、必要とあなたは固執する必要はありませんあなたのルートの上部にある文は、三元を使用していない
  • を(ファイル:)演算子不必要

私の代わりにこれを行うだろう?

#config/routes.rb 
constraints (RefererConstraint) do 
    resources :waffles 
end 

#app/constraints/referer_constraint.rb 
class RefererConstraint 
    def self.matches?(request) 
    request.referer == 'http://wafflesarerad.com' 
    end 
end 
関連する問題