В общем, ваше решение, кажется, работает, см. Следующий пример:
Однако, есть некоторые ошибки в объявлениях вашего модуля:
1) В вашем AppModule
AuthService
недоступен, так как AuthModule
не импортируется напрямую или не экспортируется с помощью SecuredModule
. Вот почему вы получаете ошибку.
2) Вам не нужно объявлять своих охранников в каком-либо модуле, они просто будут доступны по всему миру. Поместите только модули в ваш массив imports
.
3) Вы предоставляете AuthService
несколько раз, поэтому у вас будут разные его экземпляры. Вы должны предоставить его только один раз, а затем только export
(или реэкспортировать) вашего провайдера, но не предоставлять его снова.
4) ReflectMetadata
устарела в v6; используйте вместо этого SetMetadata
.
Сделайте ресурс каждой модели верхнего уровня в Вашей системе. Верхним уровнем я имею в виду модели, которые независимы и имеют значение за пределами связанной модели. Обычно это - большинство моделей. В следующем Положении в качестве примера и Кандидате верхний уровень. Вы могли полагать, что Кандидат состоял из PastEmployment и положений, к которым она подала заявку. К приложениям к позициям и предшествующей истории работы можно получить доступ через ресурс Кандидата, так как они не существуют самостоятельно.
Модели
class Position
has_many :candidate_positions
has_many :candidates, :through => :candidate_positions
end
class Candidate
has_many :candidate_positions
has_many :positions, :through => :candidate_positions
has_many :past_employments
accepts_nested_attributes_for :past_employments
accepts_nested_attributes_for :candidate_positions
end
class PastEmployment
belongs_to :candidate
end
class CandidatePosition
belongs_to :candidate
belongs_to :position
end
Маршруты
map.resources :positions
map.resources :candidates
Используйте ненаходчивый контроллер для взаимодействий с пользователем тот промежуток модели. Например, если Вы хотели иметь a HomeController
это показывает доступные положения, а также недавних кандидатов, которые были бы новым, простым контроллером. Если Вы хотите отредактировать какую-либо информацию об этом контроллере, классном! Вы уже имеете контроллеры в наличии для обработки сообщений формы, которые будут автоматически соединены проводом с <% form_for @candidate %>
. Можно представить набор положений с <%= render @positions %>
, и потому что Вы сделали их ресурсом, направляющие будут знать для заглядывания views/positions/_position.html.erb
для соответствующего частичного.
Конечный результат должен состоять в том, что Вы никогда не пишете логику для обработки персистентности объекта больше чем в одном месте. Именно тогда контроллеры становятся сложными, и формы выходят из-под контроля. Это также означает, что направляющие и внешние системы знают, где получить и хранить объекты. Тот же URL, тот же контроллер, просто другой формат.
отказ от ответственности: Я знаю направляющие, но я все еще - в значительной степени новичок. Короткий Ответ: REST и помощники формы являются совершенно другими областями.
Длинный ответ: Насколько я понимаю Представительная Передача состояния только свободно связана с фактическим рендерингом форм и представлениями.
REST действительно имеет отношение к контроллерам, и к определенному расширяют модели. Идея состоит в том, что вместо того, чтобы пытаться думать обо всем разговоре с клиентом, Вы пишете веб-приложение для ответа определенными, предсказуемыми способами к отдельным клиентским сообщениям.
т.е. если клиент ПОЛУЧАЕТ модель, Вы просто получаете ее, форматируете ее для них, отправляете ее им и забываете об этом. если клиент ОТПРАВЛЯЕТ какое-то обновление, Вы изменяете состояние веб-приложений, чтобы отразить, что, передайте любой ответ обратно и затем забудьте об этом. Любое будущее ДОБИРАЕТСЯ, или POST посмотрит на новое состояние, но не сообщение, которое создало его.
Так, действительно, действительно ли приложение является УСПОКОИТЕЛЬНЫМ, зависит не действительно от того, насколько сложный модель, но от того, как пользователи взаимодействуют с ним. Приложение означало быть по крайней мере несколько агностическим клиентом, который является информационно-центрическим, хороший кандидат на REST. Что-то, что полагается в большой степени на сессии, и взаимодействующий с определенным пользователем, и центрально процессом, не могло бы быть таким хорошим кандидатом.
С другой стороны, у Вас есть помощники формы направляющих. Они являются большими для лесов, но иногда могут быть печальными, когда Вы пытаетесь использовать их более сложными способами.
Так, каков Ваш основной вопрос? У Вас есть конкретный вопрос о помощниках формы направляющих? о контроллерах направляющих? или что-то характерное для REST?
Я не знаю RoR, таким образом, я сделаю, генерируют операторы на REST.
REST и ROI рассматривают URL как серию существительных, и это использует методы HTTP, любят, ПОЛУЧАЮТ, POST, ПОМЕЩАЮТ и УДАЛЯЮТ как глаголы. Эта модель работает на CRUD, и даже на модели с несколькими ассоциациями. Так как URL представляют ресурсы, связанные объекты могут быть выражены как список URL.
Однако, если Ваша система требует, чтобы большему количеству мелкозернистых глаголов понравилось, проверяют, перемещают, копируют, гудят, читают, пишут и т.д., что она не может удовлетворить REST.
Вы могли бы проверить эту серию Railscasts, который говорит о, много отношения и формы в контексте REST: