Rails 3 вложенных ресурсов со структурой пользователей (Devise) - PullRequest
2 голосов
/ 06 апреля 2011

У меня общие структурные проблемы с Rails 3, и новый route.rb меня немного смущает. Спасибо за любую помощь или руководство.

У меня есть приложение на форуме с вложенными ресурсами. Есть разделы, темы и ответы. Структура roads.rb выглядит следующим образом:

resources :sections do
   resources :topics do
     resources :replies
   end
end

Мой раздел.rb:

  has_many :topics
  has_many :replies, :through => :topics

Моя тема.рб:

  belongs_to :section
  has_many :replies

Мой ответ.рб:

  belongs_to :topic

И это прекрасно работает. Теперь вот где я запутался.

Я добавил пользовательский контроллер, используя Devise, и у меня есть работающая система логина / выхода из системы. Я пытаюсь связать current_user с ответами и темами. Думаю, у меня есть хорошая идея о том, как исправить модели, но я очень запутался в том, что делать в файле rout.rb.

Для user.rb я считаю, что мне нужно добавить «has_many: themes» и «has_many: answers,: through =>: themes». И тогда в моих темах мне нужно добавить «own_to: user». Я считаю, что reply.rb остается прежним?

Что касается маршрутов. Я вроде как в тупике. Если я отредактирую маршруты и добавлю в них пользователей, я получу путь вроде sectionid / username / topicid /, но мне не обязательно сохранять имя пользователя в таком маршруте. Поэтому я могу вложить пользовательские промежуточные разделы и темы или я могу оставить пользователя вне файла rout.rb.

1 Ответ

2 голосов
/ 06 апреля 2011

Вы можете оставить пользователей вне пути. Просто включите пользователей devise_for: поверх ваших маршрутов, не включая его в свой блок ресурсов.

У пользователя много тем и много ответов. Обе темы и ответы принадлежат пользователю.

Требуются дополнительные изменения в ваших контроллерах. Вам нужно добавить before_filter, чтобы проверить, аутентифицированы ли пользователи, и, кроме того, изменить большинство методов вашего контроллера, чтобы проверить, аутентифицированы ли пользователи не только, но и авторизованы, например, для поиска редактирования вы делаете current_user.replies ..... Вы можете прочитать больше об этом здесь (моя собственная страница): http://www.communityguides.eu/articles/4.

...