在我的 Rails API 中,我有以下行用于更新模型。如您所见,它接受很多参数。但是,我对此有几个问题,目前的文档没有回答......
@updated_special_deal.update_attributes(:category => params[:category], :title => params[:title], :excerpt => params[:excerpt], :description => params[:description], :original_price => params[:original_price], :deal_price => params[:deal_price], :provider => params[:provider], :product_link => params[:product_link], :conditions => params[:conditions], :phone_number => params[:phone_number], :street => params[:street], :city => params[:city], :postal_code => params[:postal_code], :state => params[:state], :country => params[:country], :expires => params[:expires], :image_file_name => params[:image_file_name], :image_content_type => params[:image_content_type], :image_file_size => params[:image_file_size], :image_updated_at => params[:image_updated_at], :public => true)
通过外部客户端应用程序尝试此 PUT 请求。我在下面得到这个回复......
Started PUT "/api/v1/1/special_deals/47?title=The+greatest+deal+ever" for 127.0.0.1 at 2013-04-12 14:39:15 -0700
Processing by Api::V1::SpecialDealsController#update as JSON
Parameters: {"title"=>"The greatest deal ever", "servant_id"=>"1", "id"=>"47"}
ActiveRecord::RecordInvalid - Validation failed: Provider can't be blank, Description can't be blank:
当然,我在模型中编写了这些规则。但是,我没有尝试传入 Provider 属性或 Description 属性。那么,这里发生了什么?
- 使用上面的 .update_attributes 语法,PUT 请求中未包含的参数会发生什么情况,他们是否只是尝试使用空白值更新模型?
- 如果是这种情况,我是否必须在使用 update_attributes 时为模型的所有属性提交值?
编辑 改写问题:如何编写 update_attributes 以便它只更新 PUT 请求中包含的属性?