簡體   English   中英

在Rails項目中放置約束類的位置

[英]Where to put constraint classes in Rails project

只是好奇Rails的最佳實踐,我在其中放置了一個自定義約束類,用作config / routes.rb中的約束。 看起來像Rails.root/lib是所有用戶類的Rails.root/lib 這適合這個嗎? 我應該在內部創建約束目錄嗎? 現在存在2個空目錄, assetstasks 對此有約定嗎?

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM