[英]Where to put constraint classes in Rails project
只是好奇Rails的最佳實踐,我在其中放置了一個自定義約束類,用作config / routes.rb中的約束。 看起來像Rails.root/lib
是所有用戶類的Rails.root/lib
。 這適合這個嗎? 我應該在內部創建約束目錄嗎? 現在存在2個空目錄, assets
和tasks
。 對此有約定嗎?
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
奇怪的是,指南沒有說明該路徑,但是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 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.