无法更新rails 4中的字段

时间:2014-07-17 11:56:07

标签: ruby-on-rails ruby-on-rails-4

当我从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

1 个答案:

答案 0 :(得分:0)

你不是在说保存。

@petition.post.update_attibute(:revisor_id, @petition.revisor_id)

或者

@petition.post.revisor_id = @petition.revisor_id
@petition.post.save

但看起来你可以重新设计你的数据库并且你已经完成了所以你不需要这样做。