У меня есть три (соответствующие) модели, указанные следующим образом:
class User < ActiveRecord::Base
has_many :posts
has_many :comments
has_many :comments_received, :through => :posts, :source => :comments
end
class Post < ActiveRecord::Base
belongs_to :user
has_many :comments
end
class Comment < ActiveRecord::Base
belongs_to :user
belongs_to :post
end
Я бы хотел иметь возможность ссылаться на все comments_received
для user
с маршрутом - скажем, для группового утверждения комментариев ко всем сообщениям. (обратите внимание, что вы также можете получить comments
, сделанный user
, но пользователи не могут комментировать свои собственные сообщения, поэтому comments
через post
отличаются и являются взаимоисключающими), По логике это должно работать с:
map.resources :users, :has_many => [:posts, :comments, :comments_received]
Это должно дать мне маршруты
user_posts_path
user_comments_path
user_comments_received_path
Первые две работы, последняя - нет. Я пробовал без _
в comments_received
безрезультатно. Я ищу URL-адрес типа
http://some_domain.com/users/123/comments_received
Я тоже пытался вложить это, но, возможно, я делаю это неправильно. В этом случае я думаю, что карта будет:
map.resources :users do |user|
user.resources :comments
user.resources :posts, :has_many => :comments
end
и тогда URL может быть:
http://some_domain.com/users/123/posts/comments
Может быть, это правильный способ сделать это, но у меня неправильный синтаксис?
Думаю ли я об этом неправильно? Мне кажется разумным, что я смогу получить страницу со всеми comments
, добавленными ко всем сообщениям пользователя.
Спасибо за вашу помощь!