次のように指定された 3 つの (関連する) モデルがあります。
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
すべてのfor をルートで参照できるようにしたいと思いますuser
。たとえば、すべての投稿のコメントを一括承認するためだとしましょう。(によって作成されることもありますが、ユーザーは自分の投稿にコメントできないことに注意してくださいcomments
user
comments
post
。論理的には、これは次のように動作するはずです:
map.resources :users, :has_many => [:posts, :comments, :comments_received]
これは私にルートを与えるはずです
user_posts_path
user_comments_path
user_comments_received_path
最初の 2 つは機能しますが、最後の 1 つは機能しません。私は無駄になし_
でそれを試しました。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
ユーザーのすべての投稿に追加されたすべて のページを取得できるはずだというのは、私には理にかなっているように思えます。
ご協力いただきありがとうございます!