0

我发现自己做保存时的模型可能是昂贵的(也许是因为我节省一吨他们)以下:如果保存模型时没有更改,Rails/ActiveRecord会访问数据库吗?

changed = false 
if user.name_changed? 
    #do some stuff 
    changed = true 
end 
if user.birthdate_changed? 
    #do some other stuff 
    changed = true 
end 
user.save! if changed 

是使用changed不必要的?如果没有任何改变,user.save!会自动执行任何操作吗?

使用Rails v3.2.16,但很高兴升级到4.0,如果它在这方面效果更好。

回答

0

ActiveRecord的save!方法将总是访问数据库。所以是的,你的changed?方法似乎是必要的。

请参阅the documentation on ActiveRecord.save!

+0

如果没有更改,文档中没有提及“save”或“save!”是否访问数据库。 –

+0

它说:“如果模型是新的,则在数据库中创建一条记录,否则将更新现有记录。”关键词“现有记录_更新._”在rails控制台中试用,当您运行'save!'时,您会看到执行查询。 –

相关问题