繁体   English   中英

更新 rails api 中的嵌套模型

[英]Update nested models in rails api

我想构建一个在数据库中创建嵌套记录的 Rails API。

我想将数据发布到数据库中以进行嵌套或说具有has_ many关联的关联模型 [请参阅下面的代码]。

这是正确的方法吗? 或者是否有update操作的替代方法? 我想记录用户Address ,该Address将以 json 格式以散列数组形式存在。

我有两个模型UserAddress 关联是User has_many Addresses

我的更新操作:

   def update
    @user = User.find(id: params[:id])

    if @user.update(first_name: params[:first_name],email: params[:email],phone: params[:phone],password: Time.now.to_i, gstin: params[:gstin],addresses)
      @user.addresses.each do |a|

        a.update_attributes(first_name: params['first_name'],last_name: params['last_name'],city: params['city'],state: params['state'],phone: params['phone'],zip: params['zip'],address: params['address'])
      end  
      render json: @user, status: 200
    else
      render json: { errors: @user.errors }, status: 422
    end
  end

这不是正确的做法,您应该使用accepts_nested_attributes_for

Class User 
  has_many :addresses
  accepts_nested_attributes_for :addresses
end

有关更多详细信息和示例,请遵循此

我想通了,并为那些被卡住的人写了答案。因为我没有使用强参数,我只需要 json 格式的地址。我解析了地址 json

def update
    @user = User.find(params[:id])
    if @user.update(first_name: params[:first_name],email: params[:email],phone: params[:phone], gstin: params[:gstin])
      updated_addreses = JSON.parse(params[:addresses])
        updated_addreses.each do |add|
          @user.addresses.update(first_name: add['first_name'],city: add['city'],state: add['state'],phone: add['phone'],zip: add['zip'],address: add['address'])
        end  
      render json: {user_id: @user.id.to_s}, status: 200
    else
      render json: { errors: @user.errors }, status: 422
    end
  end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM