私は自分のプロジェクトにコメント返信機能を実装しようとしていますが、私が使っている方法ではあまりよく分かりません。私の基本的な考え方は、親コメント(コメント)とコメント(返信)を持つ別のテーブルcomments_repliesを持っている間、すべてのコメントを1つのテーブルに保持することです。今、私はこのような何かがcomments_repliesの移行であります同じテーブルレールにある1つのテーブルから2つの外部キーを持っている
create_table :comments_replies do |t|
t.integer :parent_comment_id, index: true, foreign_key_column_for: :comments, null: false
t.integer :reply_comment_id, index: true, foreign_key_column_for: :comments, null: false
t.timestamps null: false
end
とモデルcomments_reply.rb
belongs_to :comment, class_name: 'Comment'
で、モデルcomment.rbにおける第二の場合と
has_many :comments_replies, foreign_key: :parent_comment_id, foreign_key: :reply_comment_id
テストの目的でRSPECを使用しようとしているからです。comments_reply_spec.rbというモデルがあります。
require 'rails_helper'
RSpec.describe CommentsReply, type: :model do
let(:comments_reply) { create(:comments_reply) }
subject { comments_reply }
it { is_expected.to respond_to(:parent_comment_id) }
it { is_expected.to respond_to(:reply_comment_id) }
end
が、私はあなたが達成しようとしているどのようなので、何か提案が
以下のようになります。しかし私は、どのようにすべき、私はそれが簡単になるとはるかに便利だろうと信じて、提案されたアプローチを逃しました私は移行とモデルでそのparent_idフィールドを指定しますが、単純にマイグレーションで書いても大丈夫ですか? t.integer:parent_id、index:true、foreign_key_column_for::comments、null:false 0123コメントモデル: has_many:comments、foreign_key::parent_idコメントを追加するには、次のように記述してください:コメント:foreign_key – Hatik