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 回答