config/routes.rbで制約として使用されるカスタム制約クラスを配置するRailsのベストプラクティスについて知りたいだけです。Rails.root/lib
すべてのユーザークラスが行くところのようです。これは適切ですか?制約のために内部にディレクトリを作成する必要がありますか?現在、2つの空のディレクトリが存在assets
しtasks
ます。これには慣習がありますか?
質問する
4951 次
2 に答える
21
lib/
が適切な場所になります。よりきれいにしたい場合は、それを入れて、lib/constraint/authenticated.rb
そのように制約を定義します
module Constraint
class Authenticated
def matches?(request)
# stuff
end
end
end
そしてあなたのroutes.rb
constraints Constraint::Authenticated.new do
match 'account' => 'account#index'
end
于 2012-10-23T19:00:02.457 に答える
11
ガイドがそのパスについて何も述べていないのは奇妙ですが、lib/constraintsは API ( ActionDispatch::Routing::Mapper::Scoping )にもリストされています。
ルートにとって複雑すぎる場合は、このロジックをクラスに移動できます。このクラスには
matches?
、ユーザーにそのルートへのアクセスを許可する必要がある場合は true を返し、許可しない場合は false を返すメソッドが定義されている必要があります。class Iphone def self.matches?(request) request.env["HTTP_USER_AGENT"] =~ /iPhone/ end end
このコードの予想される場所はlib/constraintsです。
于 2013-05-23T16:47:49.943 に答える