如何在创建时将两个外键关联到一个帖子

时间:2012-04-17 06:43:30

标签: ruby-on-rails

我有3个模型,如下所示,并希望将两个外键与创建时的帖子(user_id(来自用户模型)和review_id(来自评论模型)关联到目标模型。我设法使用'current_user'关联user_id通过使用下面链接中给出的解决方案来创建目标,但不确定如何完成对review_id的完成。

感谢。

Devise how to associate current user to post?

我的模特:

class User < ActiveRecord::Base       
  has_many :reviews
  has_many :periods, :through => :reviews
  has_many :goals
end

class Review < ActiveRecord::Base       
  belongs_to :user
  belongs_to :period
  has_many :goals
end

class Goal < ActiveRecord::Base       
  belongs_to :user
  belongs_to :review
end

我的goal_controller.rb

def create
  @goal = current_user.goals.build(params[:goal])

  respond_to do |format|
    if @goal.save
      format.html { redirect_to @goal, notice: 'Goal was successfully created.' }
      format.json { render json: @goal, status: :created, location: @goal }
    else
      format.html { render action: "new" }
      format.json { render json: @goal.errors, status: :unprocessable_entity }
    end
  end
end

干杯, Azren

1 个答案:

答案 0 :(得分:0)

虽然我不明白目标是什么。我通常使用的一种通用方法是将关系建模为您熟悉的内容,或者您​​可以轻松找到好的示例。例如,将您的用例视为用户 - 问题 - 答案模型。与您的用例相同,用户有许多问题和许多答案。问题有很多答案,属于用户,答案属于用户和问题。

事情变得容易,对吗?让我们看看stackoverflow如何实现这一点。您可以查看评论框的html代码,表单操作类似于(/ questions / 10186415 / answer / submit)。这里10186415是问题ID,它被传递到服务器端,所以当创建一个答案时,这个问题id可以被使用和相关。

回到你的情况,目标表格应该知道它的评论。审核ID可以是隐藏字段,也可以是提交网址的一部分。