0

記事、コメント、ユーザーの 3 つの基本モデルがあります。現在、コメントは記事内にネストされていますが、記事のすべてのコメントは記事表示ページに表示されます。私の「問題」は、コメントがユーザーと記事の両方に属している必要があることです。さて、私の comments_controller の作成アクションでは、同時に 2 つのビルド アクションを実行するのはちょっと難しいです。私が基本的に欲しいのは両方です

    @comment = @article.comments.build(params[:comment])

そして

    @comment = @user.comments.build(params[:comment])

私のcomments_controllerの同じ作成アクションで。もちろん、私が間違っていなければ、両方の行を同時に実行することはできません。少なくとも、それは私が望んでいたことにはなりません。

私のコメントでは、コメントのユーザー情報を呼び出して、user_name とそのアバターを取得したいと考えています。コメント テーブルに user_name 列を追加し、それを次のように処理できます。

    @user = current_user
    @comment = @article.comments.build(params[:comment])
    @comment.user_name = @user.name

しかし、これはちょっと不器用で、コメントのユーザーのアバターをペーパークリップ プラグインで表示したい場合は複雑になります。

ユーザーと記事モデルの「コメント可能な」インターフェースを備えたポリモーフィックな関連付けを使用して、(記事とユーザーとの) コメントの 2 つの関連付けを構築する唯一の方法はありますか? ユーザーは実際にはコメント可能ではなく、コメントを作成するため、これでも論理的にはきれいではないように感じます。もちろん、このロジックの欠如はアプリの問題ではありませんが、私の意見では、複数のモデルに属するコメントのかなり一般的な状況に対する他の解決策はありませんか? どんな助けでも大歓迎です!ありがとうございました!

4

1 に答える 1

0

コメント モデルには、article_id と user_id の列が必要です。form_for に隠しフィールドを入れてみてください:

<%= f.hidden_field(:comment_id, :value => @comment.id) %>

次に、呼び出すと@comment = current_user.comments.build(params[:comment])、それが渡されます。そして、あなたは呼び出すことができます@comment.user.user_name

于 2012-05-31T13:43:25.653 に答える