当我从revisor_id
模型更新Petition
时,我想从我的revisor_id
模型中自动更新Post
。
所以,在我的petitions_controller.rb
中,我在update
方法中添加了这一行:
@petition.post.revisor_id = @petition.revisor_id
使用调试器,我可以看到执行该行后,两者都设置正确。但似乎它没有保存在数据库或其他东西中,因为当我请求显示revisor_id设置为1的所有帖子时,它没有显示任何内容。
我认为它与强参数有关,因为我刚刚使用rails 4,但不确定。
有什么想法吗?
#petitions_controller.rb
...
def update
respond_to do |format|
if @petition.update(petition_params)
@petition.post.revisor_id = @petition.revisor_id
format.html { redirect_to @petition, notice: 'Petition was successfully updated.' }
format.json { render :show, status: :ok, location: @petition }
else
format.html { render :edit }
format.json { render json: @petition.errors, status: :unprocessable_entity }
end
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_petition
@petition = Petition.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def petition_params
params.require(:petition).permit(:user_id, :category_id, :revisor_id, :status, :post_id)
end
答案 0 :(得分:0)
你不是在说保存。
@petition.post.update_attibute(:revisor_id, @petition.revisor_id)
或者
@petition.post.revisor_id = @petition.revisor_id
@petition.post.save
但看起来你可以重新设计你的数据库并且你已经完成了所以你不需要这样做。