Я могу дать вам способ CakePHP (который первоначально был спроектирован так, чтобы быть похожим на рельсы).
Все модели CakePHP расширяют один и тот же родительский AppModel, и все контроллеры расширяют AppController.
Я бы сделал пустой параметр в AppModel, который представляет ваш объект. Затем в AppController я бы сохранил объект в параметре текущей модели, если объект существует. В CakePHP AppController есть обратный вызов с именем beforeFilter(), который запускается перед любым кодом в контроллере. Идеальное место для проверки объекта и сохранения его в модели было бы в любом эквивалентном Rails этого обратного вызова beforeFilter.
То есть, если все модели не используют объект. Если это так, вы можете поместить этот параметр только в Модели, которые его используют (вместо родителя), а затем в beforeFilter из AppModel вы можете сначала проверить, имеет ли модель этот пустой параметр.
Я знаю, что это не рубин, но это будет выглядеть следующим образом:
public function beforeFilter() {
if (isset($this->{$this->modelName}->yourObjectParameter)) {
$this->{$this->modelName}->yourObjectParameter = $this->yourObject;
}
}
$this->modelName
является строкой, которая соответствует имени текущей модели. { }
около $this->modelName
в PHP называется сложным синтаксисом. Он в основном преобразует строку в объект модели. Не уверен, как сделать то же самое в Ruby.
Спасибо, Майк. Раньше я был в Authlogic + плагинах. Я перешел на личность пользователей, полностью привязанных к Facebook, поэтому средства для обработки и обработки паролей Authlogic стали посторонними, и я вынул их. Я закончил тем, что просто извлек некоторые функции плагинов authlogic в методы фильтрации. Существуют ли другие преимущества для разработки/authlogic, которые я могу упустить? – ambertch
На самом деле, я действительно глуп - я проходил в этой сессии b/c Мне нужен токен доступа OAuth, который я вставлял в него, и не у всех пользователей есть один (некоторые из них «поддельные» пользователи). ОДНАКО, у меня есть архитектурная гарантия того, что любой модельный метод, который я передаю, для которого нужен токен доступа сеанса, имеет доступ к пользователю с токеном доступа. Еще раз спасибо Майку, ваш ответ помог мне все продумать. – ambertch