我有一个Ruby散列,我通过远程Web API检索。我有一个ActiveRecord模型,它具有与散列中的键相同的属性。使用Ruby on Rails 4将密钥/ val对从哈希分配给模型实例是否有一种微不足道的方法?是否可以忽略不存在的键?如何使用key/val对的散列并设置ActiveRecord属性
1
A
回答
1
按照Rails docs:
更新(属性)
从更新传入的散列并保存记录,所有包裹在一个交易模型的属性。如果该对象无效,则保存将失败并返回false。
所以尽量
model.update(dat_hash) #dat_hash being the hash with the attributes
我一直在做对Rails 3.2同样的事情用update_attributes方法,这是同样的事情。这是我的代码:
def update
@form = get_form(params[:id])
@form.update_attributes(params[:form])
@form.save
if @form.save
render json: @form
else
render json: @form.errors.full_messages, status: :unprocessable_entity
end
end
它只更新散列中的属性。
2
超级简单!
更新的属性不保存:
model.attributes = your_hash
# in spite of resembling an assignemnt, it just sets the given attributes
更新属性节省:
model.update_attributes(your_hash)
# if it fails because of validation, the attributes are update in your object
# but not in the database
更新属性,保存,如果无法保存提高
model.update_attributes!(your_hash)
相关问题
- 1. 设置ActiveRecord模型属性
- 2. ActiveRecord检测属性设置
- 3. 如何在创建ActiveRecord对象时设置属性?
- 4. 在RUby中使用散列设置属性
- 5. 如何使属性设置
- 6. ActiveRecord:如何设置模型的“更改”属性?
- 7. 创建对象并设置属性
- 8. 如何使用MethodInfo.Invoke设置属性值?
- 9. 如何设置AngularJs属性使用Javascript
- 10. 如何使用JavaScript设置marginLeft属性?
- 11. 如何使用Dispatcher设置Image.Source属性?
- 12. 如何使用keytool设置Usage属性
- 13. 使用反射设置对象属性
- 14. 使用TryParse设置对象属性值
- 15. 使用AJAX设置对象属性
- 16. 如何遍历散列和最小属性的散列
- 17. 如何使用自己的数据属性设置CSS属性?
- 18. 如何拦截使用属性的类属性设置器
- 19. 如何使用反射来设置此对象的属性?
- 20. 如何使用RSpec测试组合对象属性的设置?
- 21. 如何使用setter设置/编辑对象的属性
- 22. 如何使用CoffeeScript中的类设置对象属性
- 23. 如何使用在对话框中设置的属性
- 24. 如何使用KVC设置Core Data对象的属性?
- 25. 合并多个Ruby散列属性
- 26. 合并散列与属性数组
- 27. RSpec属性散列
- 28. 如何设置对象转换属性?
- 29. 如何设置本机对象属性
- 30. 在属性中使用散列表键