1

私はrails4アプリケーションを持っています。私は以下のスキーマを持っており、post_repliesテーブルを追加します。belong_to :post_commentpost_commenthas_many :post_repliesになります。コメントの下の返信は常にそのコメントに属します。railsテーブルに含める外来キーの数

私の質問は、post_repliesにいくつの外部キーを追加するべきかということです。私はいつもそれらをpost index pageにだけ表示し、新しい返信はformat_jsで追加されます。 post_replybelongs_to post_comment確かに、belongs_to :userbelongs_to :postの両方を使用する必要がありますか?

現在のスキーマ:

class User < ActiveRecord::Base 
    has_many :posts 
    has_many :post_comments, through: :posts 
end 

class Post < ActiveRecord::Base 
    has_many :post_comments 
    belongs_to :user 
end 

class PostComment < ActiveRecord::Base 
    belongs_to :post 
    belongs_to :user 
end 

計画スキーマ:

class PostReply < ActiveRecord::Base 
    belongs_to :post_comment #this is needed for sure 
    belongs_to :post #do i need this? 
    belongs_To :user #and this? 
end 

路線:

#current: 

resources :posts do 
    resources :post_comments, only: [:create, :update, :destroy], module: :posts 
end 

#and planning to add: 

resources :post_comments, only: [] do 
    resources :post_repiles, only: [:create, :update, :destroy], module: :posts 
end 

答えて

2

それはユーザーに属している必要がありますが、それがあればポストに属している必要はありませんあなたはそのモデルを通じて投稿にアクセスできるので、すでにpost_commentに属しています。

+0

toddmetheny、plsは –

+0

あなたのルートが私には罰金を見Elux91の答えの下で私のコメントをチェック! – toddmetheny

+0

はい 'post_replies'を' post_comments'にネストする必要があるかどうかはわかりません。そして 'post_comments'を' posts'にネストする必要があるかどうかもわかりません –

1

PostReplyCommentReplyは、コメントへの返信であり、直接投稿ではないので、名前を付けてください。

コメントIDが既にある場合、コメントは既に投稿との関係があるため、post_idを保存する必要はありません。

これはうまくいくはずです。あなたが特定の問題を抱えている -

class CommentReply < ActiveRecord::Base 
    belongs_to :post_comment 
    belongs_To :user 
end 
+0

ルートはどうですか?私は ':create'、':destroy'、 ':update'だけが必要です。この場合、どのように整理しますか? –

+0

投稿のコメントを得るためにインデックスルートは必要ありませんか?作成、破棄、更新のみを行っている場合は、実際にあなたに投稿、コメントを与えるアクションはありません。 – Elux91

+0

コメントは 'posts#index'ページだけに表示されるので(' post_replies'もそうです)、 'post.post_comments'を単に呼び出すことができるので、私はそれを必要としません。しかし、例えば 'post_comment'を作成するために' post'を指定する必要があります。今私は 'post_comment'の下で' post_replies'を送る必要があると思います。 –

関連する問題