1,希望 post 的时候可以直接调用
@topic = Topic.new(params)
@topic.save
这种方式直接一次性地提交
2,希望 put 的时候也可以比较方便地更新
@topic = Topic.find(params[:id])
@topic.update(entry_params)
@topic.save
目前是一个字段 一个字段地更新,还得写一堆 if 语句判断这个字段有没有被设置 假如某些字段没有设置的话,而强制更新就可能原来有值后来变成 null 了
大家都是怎么解决这个问题的哇?
update(attributes) Updates the attributes of the model from the passed-in hash and saves the record
只会更新指定的属性,不会把不指定的属性默认设置成 nil
如果遇到了这样的问题,可以先 debugger 一下看看,entry_params 传递过来的到底是什么值。另外看起来你是写了 entry_params 的 helper 方法吧,检查一下自己的这个 helper 写的正确吗
我写的那个 update(attributes) 是 rails 的 controller 里的写法呀,不是 grape 里的写法 在 grape 里我是一个一个属性写的,感觉有点笨拙,所以想找个方便的写法
#8 楼 @wuwx 单就你这句话而言 update_attributes 和 update 没区别。
请看下面的文档说明
update(attributes)
Updates the attributes of the model from the passed-in hash and saves the record, all wrapped in a transaction. If the object is invalid, the saving will fail and false will be returned.
Also aliased as: update_attributes
你能加个断点,把 entry_params 打印出来看看么。