0

我有一个Scorethat belongs_to Client- 和Clienthas_one Score

我还想在创建时分配ScoreUser。因此,每次 acurrent_user为特定客户创建分数时,我都希望将current_user.id其与该Score记录一起存储。

最好的方法是什么?

我在想一种优雅的方式可能是一种Score belongs_to User, :through Client但那是行不通的。

所以我假设最好的方法是添加user_idScore模型中,然后这样做。

user_id但是,我该如何分配Score#create

这就是我的创建操作的外观:

def create
    @score = current_user.scores.new(params[:score])

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

结尾

这会自动将当前分数分配给哈希client_id中的params[:score]—— 但它不会对user_id.

是什么赋予了?

4

1 回答 1

1

只要你有Score.belongs_to :user,并且附表user_id中的一栏scores

def create
  @score = Score.new(params[:score])
  @score.user = current_user

  ...
end

如果您需要更多解释,请告诉我,但我觉得代码很清楚。

编辑或:代替current_user.scores.new,使用current_user.scores.build(params[:score]),并确保你有User.has_many :scores

于 2012-10-12T21:43:02.937 回答