我有三个(相关的)模型,指定如下:
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
a user
- 假设它是为了批量批准所有帖子的评论。(请注意,您也可以comments
通过 获得user
,但用户无法对自己的帖子发表评论,因此comments
通过 apost
是不同且互斥的)。从逻辑上讲,这应该适用于:
map.resources :users, :has_many => [:posts, :comments, :comments_received]
这应该给我路线
user_posts_path
user_comments_path
user_comments_received_path
前两个有效,最后一个无效。我已经尝试过,但_
无济于事comments_received
。我正在寻找一个像
http://some_domain.com/users/123/comments_received
我也尝试过嵌套它,但也许我做错了。在这种情况下,我认为地图将是:
map.resources :users do |user|
user.resources :comments
user.resources :posts, :has_many => :comments
end
然后网址可能是:
http://some_domain.com/users/123/posts/comments
也许这是正确的方法,但我的语法错误?
我在想这个错误的方式吗?对我来说,我应该能够获得所有comments
添加到所有用户帖子的页面,这似乎是合理的。
谢谢你的帮助!