Желательно ли, чтобы маршруты. Rb просматривали каталоги при создании маршрутов? - PullRequest
0 голосов
/ 09 декабря 2011

У меня есть контроллер под названием «отчеты».В нем я хочу отображать готовые отчеты через партиалы.В сущности, я не хочу создавать полноценный генератор запросов / отчетов sql, поэтому я считаю, что самый простой способ сделать это - каждый раз, когда я хочу создать новый отчет, я делаю это только в частичном файле.Затем я загружаю этот файл, и все маршруты / методы создаются на лету.Это означает, что в контроллере есть метод, который просматривает каталог views для партиалов, а затем возвращает безопасную для URL строку, которая будет использоваться в маршрутах и ​​в моделях контроллера.

У меня есть вопрос "будет ли это создавать узкое место в скорости "?Таким образом, каждый раз, когда запрашивается URL-адрес, выполняется поиск в каталоге.

Контроллер:

class ReportsController < ApplicationController

    def initialize
    super()
    ReportsController::reports(true).each do |report|
        self.class.send(:define_method, report.gsub('-', '_').to_sym) do
        render "#{name_to_safe_url(report).gsub('-', '_')}.html.erb"
        end
    end
    end

    # Currently I'm just using a static array to give the reports.
    # This will change such that it will look through the views directory
    # for partials.  It will read the file name and return it as part of the list
    def self.reports(return_url = false)
    list = [
        "Revenue/Sale",
        "Item Quantities",
        "Number of Sales/Day",
        "Compare Revenue to Past Dates"
    ]
    return_url ? list.map{|i| name_to_safe_url(i)} : list
    end

    def self.name_to_safe_url(name)
    name.gsub(/\//, ' per ').squeeze(' ').gsub(/[^a-z]/i, '-').squeeze('-').chomp('-').downcase
    end

end

1 Ответ

0 голосов
/ 09 декабря 2011

Пожалуйста, повторите мантру Skinny Controller Fat Model , прежде чем писать такой код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...