Rails 3 - 只有多态关联的选择?

时间:2012-05-31 11:02:51

标签: ruby-on-rails-3 build associations polymorphic-associations belongs-to

我有3个基本模型:文章,评论和用户。目前,评论嵌套在文章中,尽管如此,文章的所有评论都显示在文章显示页面上。 我的“问题”是评论应该同时属于用户和文章。现在,在我的comments_controller的create动作中,同时执行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

但是当我想通过paperclip插件显示评论的用户头像时,这有点笨拙并且变得复杂。

是唯一可能的方式为评论(使用文章和用户)建立2个关联,使用多态关联和用户和文章模型的“可评论”界面?我觉得即使这在逻辑上也不是很干净,因为用户不是真正的可评论而是发表评论。当然,这种缺乏逻辑对于应用程序来说不会是一个问题,但是在我看来,是否存在其他解决方案,而不是一个属于多个模型的评论的常见情况? 任何帮助表示赞赏!谢谢!

1 个答案:

答案 0 :(得分: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