Мне смешали метод класса в ко всем моим моделям. метод называют, когда образцовый класс оценен. к сожалению (для меня), это, кажется, по запросу, каждый раз, когда модель необходима в ENV разработки, как могут иметь направляющие, загружают все модели при запуске? это даже желательно?
class Foo < ActiveRecord::Base
include Acl
register_acl # i need this to be called for all models at start up
end
В основном register_acl берет несколько аргументов "действий", что модель хотела бы быть доступом, которым управляют. Предположим, что одно из действия Foo, "справляются", и система должна знать об этом действии при запуске. Я думаю в модели, самое естественное место, чтобы иметь эту логику.
спасибо!
В концептуальных моделях MVC не предполагается, что они действуют сами по себе, т.е. они должны действовать только тогда, когда контроллер отправляет им сообщение (например, @ foo.register_acl). Экземпляры модели даже не должны существовать, пока они не будут созданы контроллером.
Чего вы пытаетесь достичь с помощью метода register_acl?
Если вам действительно нужно что-то выполнить при создании объекта, вы можете использовать метод initialize (), который вызывается всякий раз, когда создается объект Ruby.
Однако, если вам нужна модель для самостоятельного выполнения некоторого кода, вы, скорее всего, столкнетесь с запахом кода и вам нужно что-то изменить в своем приложении.