[英]Update nested models in rails api
我想构建一个在数据库中创建嵌套记录的 Rails API。
我想将数据发布到数据库中以进行嵌套或说具有has_ many关联的关联模型 [请参阅下面的代码]。
这是正确的方法吗? 或者是否有update
操作的替代方法? 我想记录用户Address
,该Address
将以 json 格式以散列数组形式存在。
我有两个模型User
和Address
。 关联是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.