在何处将约束课程放入Rails项目中



只是对Rails的最佳实践感到好奇,我在其中放置了一个自定义约束类,该类别用作Config/Routes.rb中的约束。似乎Rails.root/lib是所有用户类都去的地方。这适合这个吗?我应该为约束创建一个目录吗?现在存在2个空目录,assetstasks。是否有会议?

lib/将是适当的位置。如果您想使其更清洁,请将其放入lib/constraint/authenticated.rb中,并定义您的约束,例如So

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 甚至列出范围):

如果对于路线来说太复杂,则可以将此逻辑移至类中。此类必须具有在其上定义的matches?方法,如果应授予用户访问该路线,则返回true,或者如果用户不应该访问该路由。

class Iphone
  def self.matches?(request)
    request.env["HTTP_USER_AGENT"] =~ /iPhone/
  end
end

此代码的预期位置将是 lib/Constraints

相关内容

  • 没有找到相关文章

最新更新