我有Score
属于Client
- 和Client
has_one Score
。
我还想在创建时将Score
分配给User
。因此,每当current_user
为特定客户创建分数时,我希望current_user.id
与Score
条记录一起存储。
最好的方法是什么?
我认为优雅的方式可能是Score belongs_to User, :through Client
,但这不起作用。
所以我假设最好的方法是将user_id
添加到Score
模型中,并按照这样做。
但是,如何在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
不会执行相同操作。
是什么给出了?
答案 0 :(得分: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