我有一个Ruby哈希,我正在通过远程Web API检索。我有一个ActiveRecord模型,它具有与哈希中的键相同的属性。 Ruby on Rails 4是否有一种简单的方法可以将哈希中的键/值对分配给模型实例?是否可以忽略不存在的密钥?
答案 0 :(得分:3)
超方便!
更新属性而不保存:
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 :(得分:1)
根据Rails docs:
更新(属性)
从传入的哈希中更新模型的属性并保存记录,所有记录都包含在事务中。如果对象无效,则保存将失败并返回false。
所以试试
model.update(dat_hash) #dat_hash being the hash with the attributes
我一直在使用update_attributes在Rails 3.2中做同样的事情,这是同样的事情。这是我的代码:
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
它只更新散列中的属性。